{-# LANGUAGE TupleSections,ScopedTypeVariables,DeriveDataTypeable,OverloadedStrings #-}
-- UUAGC 0.9.52.1 (hssqlppp/src/Database/HsSqlPpp/Internals/AstInterna)
module Database.HsSqlPpp.Internals.AstInternal(
    --from the ag files:
    --ast nodes
    Statement (..)
   ,QueryExpr (..)
   ,WithQueryList
   ,WithQuery(..)
   ,FnBody (..)
   ,SetClause (..)
   ,SetClauseList
   ,TableRef (..)
   ,JoinExpr (..)
   ,JoinType (..)
   ,JoinHint (..)
   ,SelectList (..)
   ,SelectItem (..)
   ,CopyFromSource (..)
   ,CopyToSource(..)
   ,CopyToOption(..)
   ,CopyFromOption(..)
   ,TablePartitionDef(..)
   ,TablePartitionDateTimeInterval(..)
   ,AttributeDef (..)
   ,RowConstraint (..)
   ,AlterDatabaseOperation(..)
   ,AlterTableOperation(..)
   ,AlterTableAction(..)
   ,AlterSequenceOperation(..)
   ,AlterSequenceAction(..)
   ,AlterColumnAction(..)
   ,AlterSchemaOperation(..)
   ,Constraint (..)
   ,TypeAttributeDef (..)
   ,ParamDef (..)
   ,VarDef (..)
   ,RaiseType (..)
   ,CombineType (..)
   ,Volatility (..)
   ,Language (..)
   ,TypeName (..)
   ,DropType (..)
   ,Cascade (..)
   ,Direction (..)
   ,Distinct (..)
   ,NullsOrder(..)
   ,Natural (..)
   ,IfExists (..)
   ,Replace(..)
   ,RestartIdentity (..)
   ,ScalarExpr (..)
   ,Name(..)
   ,nameComponents
   ,NameComponent(..)
   ,ncStr
   ,IntervalField(..)
   ,ExtractField(..)
   ,FrameClause(..)
   ,OdbcLiteralType(..)
   ,InList (..)
   ,LiftFlavour(..)
   ,TriggerWhen(..)
   ,TriggerEvent(..)
   ,TriggerFire(..)
   ,QueryHint(..)
   ,StatementList
   ,ScalarExprListStatementListTripleList
   ,ScalarExprListStatementListTriple
   ,ScalarExprList
   ,ParamDefList
   ,AttributeDefList
   ,ConstraintList
   ,TypeAttributeDefList
   ,TypeNameList
   ,NameTypeNameListPair
   ,NameTypeNameListPairList
   ,ScalarExprStatementListPairList
   --,SetClauseList
   ,CaseScalarExprListScalarExprPairList
   ,MaybeScalarExpr
   ,TableRefList
   ,ScalarExprListList
   ,SelectItemList
   ,OnExpr
   ,RowConstraintList
   ,VarDefList
   ,ScalarExprStatementListPair
   ,CaseScalarExprListScalarExprPair
   ,ScalarExprDirectionPair
   ,ScalarExprDirectionPairList
   ,MaybeBoolExpr
   ,MaybeSelectList
   ,SetValue(..)
   ,AlterTableActionList
   ,NameComponentList
   ,MaybeNameComponentList
   -- typechecking
   ,typeCheckStatements
   --,typeCheckParameterizedStatement
   ,typeCheckScalarExpr
   --,typeCheckScalarExprEnv
   ,typeCheckQueryExpr
   ,TypeCheckFlags(..)
   ,addExplicitCasts
   ,addImplicitCasts
   -- annotation
   ,Annotation(..)
   --,TypeExtra(..)
   ,SourcePosition
   ,ParameterizedStatementType
   ,getAnnotation
   ,updateAnnotation
   ,emptyAnnotation
   ,makeSelect
   --,canonicalizeTypeNames
) where

--import Data.Maybe
--import Data.Either
--import Data.List
--import Control.Applicative
import Data.Data
--import Data.Char
--import Control.Monad.State
--import Control.Arrow

import Data.Generics
import Data.Generics.Uniplate.Data
--import Debug.Trace
--import Text.Show.Pretty


--import Database.HsSqlPpp.Internals.TypesInternal

--import Database.HsSqlPpp.Internals.TypeChecking.TypeConversion
--import Database.HsSqlPpp.Internals.TypeChecking.Environment hiding (JoinType(..))

--import Database.HsSqlPpp.Internals.Catalog.CatalogInternal (NameComponent(..),ncStr)

--import Database.HsSqlPpp.Utils.Utils
--import Database.HsSqlPpp.Internals.Dialect
--import Data.Text (Text)
import qualified Data.Text as T
--import qualified Data.Text.Lazy as LT

-- very bad, we use types in the syntax outside of the already exception
-- in the annotation (which can be removed when the annotation type
-- becomes a type parameters
-- can replace the use of type extra with (typename,int,int) triple
-- to fix this
--import Database.HsSqlPpp.Internals.TypesInternal (TypeExtra)



{-# LINE 2 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}

import Data.Text (Text)
import qualified Database.HsSqlPpp.Internals.TypeChecking.Environment as E
import Database.HsSqlPpp.Internals.TypeChecking.Environment (Environment)
import Database.HsSqlPpp.Internals.TypesInternal
import Database.HsSqlPpp.Internals.Dialect
import Database.HsSqlPpp.Internals.Catalog.CatalogInternal
import Database.HsSqlPpp.Internals.Catalog.CatalogTypes
import Database.HsSqlPpp.Internals.Catalog.CatalogBuilder
import Database.HsSqlPpp.Internals.TypeChecking.TypeConversion.TypeConversion

-- todo: find a better way to do this, this information should come
-- via the dialect or catalog in the attributes
import Database.HsSqlPpp.Dialects.OdbcCatalog

import Control.Monad
import Data.List
import Data.Maybe
import Data.Char
import Text.Read
import Control.Applicative
{-# LINE 181 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 14 "hssqlppp/src/Database/HsSqlPpp/Internals/Annotation.ag" #-}

import qualified Database.HsSqlPpp.Internals.TypesInternal as T
import qualified Database.HsSqlPpp.Internals.Catalog.CatalogTypes as C

{-# LINE 188 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
{-# LINE 62 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag" #-}

-- todo: replace the other nmcString function with this one
-- which uses either instead of error
xnmcString :: NameComponent -> Either [TypeError] Text
xnmcString (QNmc n) = Right $ T.pack n
xnmcString (Nmc n) = Right $ T.pack $ map toLower n
xnmcString (AntiNameComponent _) = Left [InternalError "tried to get nmc string from antinamecomponent"]
{-# LINE 197 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 191 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}

splitTypeExtraList:: Maybe [TypeExtra] -> Maybe (TypeExtra,[TypeExtra])
splitTypeExtraList mte = mte >>= f
  where
    f [] = Nothing
    f (et:ets') = Just (et,ets')
{-# LINE 206 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 212 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}


-- | thet name to choose for a column in a select list which doesn't
-- have an explicit name - these are postgresql's rules
columnName :: ScalarExpr -> NameComponent
columnName (Identifier _ i) = last $ nameComponents i
columnName (App _ (Name _ ncs) _) = last ncs
columnName (Cast _ _ (SimpleTypeName _ (Name _ ncs))) = last ncs
columnName (ImplicitCast _ e _) = columnName e
columnName (WindowApp _ (App _ (Name _ ncs) _) _ _ _) = last ncs
columnName (AggregateApp _ _ (App _ (Name _ ncs) _) _) = last ncs
columnName _ = QNmc "?column?"
{-# LINE 221 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 160 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}

convertJoinType:: JoinType -> E.JoinType
convertJoinType LeftOuter = E.LeftOuter
convertJoinType RightOuter = E.RightOuter
convertJoinType FullOuter = E.FullOuter
convertJoinType _ = E.Inner
{-# LINE 230 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 82 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}

secondM :: Functor f => (t -> f a) -> (t1, t) -> f (t1, a)
secondM f (a,b) = (a,) <$> f b
{-# LINE 236 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 47 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}

needsImplicitCast:: Bool -> TypeExtra -> TypeExtra -> Bool
needsImplicitCast expectedCast upType expType
    = tePrecision upType /= tePrecision expType
      || teScale upType /= teScale expType
      || teNullable upType /= teNullable expType
          && nullabilityCast
      ||  teType upType /= teType expType
          && (not . null) (nub [teType upType, teType expType] \\ [ScalarType "varchar", ScalarType "text",ScalarType "nvarchar"])
  where
    nullabilityCast = expectedCast
-- this function appeared because nullability does not always influence the type to cast to
implicitCastType:: Bool -> TypeExtra -> TypeExtra -> TypeExtra
implicitCastType expectedCast upType expType
    = expType{tePrecision = precision, teScale = scale, teNullable = nullability}
  where
    nullabilityCast = expectedCast
    nullabilitySource = if nullabilityCast then expType else upType
    precisionSource = expType
    nullability = teNullable nullabilitySource
    precision = tePrecision precisionSource
    scale = teScale precisionSource
{-# LINE 261 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 512 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}

getMaybeIntsFromLiterals :: [ScalarExpr] -> MatchAppLiteralList
getMaybeIntsFromLiterals sel = map extractor sel
  where
   extractor :: ScalarExpr -> Maybe Int
   extractor (NumberLit _ s) = readMaybe s :: Maybe Int
   extractor _ = Nothing
{-# LINE 271 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 795 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}

classifyInteger :: Dialect -> String -> Either [TypeError] Text
classifyInteger d s = maybe (Left []) Right $ case (readMaybe s :: Maybe Integer) of
                      -- assuming number literals are always positive
                      Just n | n < (2 ^ (31 :: Integer)) -> ansiTypeNameToDialect d "int"
                             | n < (2 ^ (63 :: Integer)) -> ansiTypeNameToDialect d "bigint"
                      _ -> ansiTypeNameToDialect d "numeric"
{-# LINE 281 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 26 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}


-- | some options when typechecking
data TypeCheckFlags =
    TypeCheckFlags
    { -- | add qualifiers to unqualified ids where possible
     tcfAddQualifiers :: Bool
     -- | add full aliases to every tableref and subselect
    ,tcfAddFullTablerefAliases :: Bool
     -- | add explicit aliases to all select items
    ,tcfAddSelectItemAliases :: Bool
     -- | expand stars in select lists to explicit list columns
    ,tcfExpandStars :: Bool
    ,tcfDialect :: Dialect}
    deriving (Show,Eq)

-- | Typechecks the ast, and returns the updated catalog (which
-- includes changes from any ddl statements in the ast).
typeCheckStatements :: TypeCheckFlags -> Catalog -> [Statement] -> (Catalog,[Statement])
typeCheckStatements f cat sts =
    let t = _sem_Root (Root sts)
        ta = _wrap_Root t Inh_Root {_cat_Inh_Root = cat
                                  ,_flags_Inh_Root = f
                                  {-,_lib_Inh_Root = emptyBindings
                                  ,_idenv_Inh_Root = emptyIDEnv "tcs"-}}
        tl = _annotatedTree_Syn_Root ta
        cat1 = cat --_producedCat_Syn_Root ta
    in case tl of
         Root r -> (cat1,fixTree (tcfDialect f) r)
-- | Typecheck a query expr
typeCheckQueryExpr :: TypeCheckFlags -> Catalog -> QueryExpr -> QueryExpr
typeCheckQueryExpr f cat qe =
   let (_,[QueryStatement _ qe']) = typeCheckStatements f cat [QueryStatement emptyAnnotation qe]
   in qe'

-- | Not working yet. Typechecks a statement possibly containing ?
-- placeholders. These are annotated with the 'inferred type', and the
-- stType annotation on the return value can be used to get this info
-- easily. Returns Left if the statement is not a query,insert,update or delete
-- statement
{-typeCheckParameterizedStatement :: TypeCheckFlags -> Catalog -> Statement -> Either String Statement
typeCheckParameterizedStatement f cat st =
    case st of
      QueryStatement _ _ -> tc
      Insert _ _ _ _ _ -> tc
      Update _ _ _ _ _ _ -> tc
      Delete _ _ _ _ _ -> tc
      _ -> Left "requires select, update, insert or delete statement"
    where
      tc = let tl = typeCheckStatements f cat [st]
           in case tl of
                (_,[st1]) -> Right st1
                _ -> error "impossible happened in typeCheckPS!"
-}
{-
-- | type check a scalar expr
typeCheckScalarExpr :: TypeCheckFlags -> Catalog -> ScalarExpr -> ScalarExpr
typeCheckScalarExpr f cat ex =
    let t = _sem_ScalarExprRoot (ScalarExprRoot ex)
        rt = (_annotatedTree_Syn_ScalarExprRoot
              (_wrap_ScalarExprRoot t Inh_ScalarExprRoot {_cat_Inh_ScalarExprRoot = cat
                                                        ,_flags_Inh_ScalarExprRoot = f
                                                        ,_downEnv_Inh_ScalarExprRoot = E.emptyEnvironment
                                                        {-,_lib_Inh_ScalarExprRoot = emptyBindings
                                                        ,_idenv_Inh_ScalarExprRoot = emptyIDEnv "t
cse"-}}))
    in case rt of
         ScalarExprRoot e -> fixTree e -}

typeCheckScalarExpr ::  TypeCheckFlags -> Catalog -> Environment
                          -> ScalarExpr -> ScalarExpr
typeCheckScalarExpr f cat env ex =
    let t = _sem_ScalarExprRoot (ScalarExprRoot ex)
        rt = _annotatedTree_Syn_ScalarExprRoot
                $ _wrap_ScalarExprRoot t
                    Inh_ScalarExprRoot{_cat_Inh_ScalarExprRoot = cat
                                      ,_flags_Inh_ScalarExprRoot = f
                                      ,_downEnv_Inh_ScalarExprRoot = env}
    in case rt of
         ScalarExprRoot e -> fixTree (tcfDialect f) e

{-# LINE 365 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 158 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}


-- | run on a typechecked tree. Finds all the places where an implicit
-- cast has been used in the typechecking and inserts an explicit cast
addExplicitCasts :: Data a => a -> a
addExplicitCasts = transformBi removeDoubleCasts . transformBi addCast
  where
    addCast :: ScalarExpr -> ScalarExpr
    addCast e = fromMaybe e $ do
                  t <- anImplicitCast (getAnnotation e)
                  n <- nameOfType $ teType t
                  return $ Cast emptyAnnotation e n
    -- addCast isn't very smart, so remove any unneeded casts
    -- that it has inserted. Only do this when have two
    -- nested casts which cast to the same type, so this
    -- shouldn't cause problems with sane sql
    removeDoubleCasts :: ScalarExpr -> ScalarExpr
    removeDoubleCasts e = case e of
      (Cast a (Cast _ e' t1) t)
         | resetAnnotations t1 == resetAnnotations t -> Cast a e' t
      e' -> e'
    resetAnnotations = transformBi (const emptyAnnotation)
-- | variation of the above, which uses ImplicitCast ctor
addImplicitCasts :: Data a => Catalog -> a -> a
addImplicitCasts cat = transformBi removeDoubleCasts . transformBi addCast
  where
    addCast:: ScalarExpr -> ScalarExpr
    addCast e = fromMaybe e $ do
                  te <- anImplicitCast ann'
                  -- ImplicitCastToDo: why anImplicitCast is not Nothing above Star
                  _ <- nameOfType $ teType te -- in order to preserve the old logic
                  -- guard $ isCastable e $ teType te
                  guard $ anType ann' /= Just te
                  return $ ImplicitCast emptyAnnotation e te
      where
        _isCastable:: ScalarExpr -> Type -> Bool
        _isCastable e' to = fromMaybe False $ do
            from <- liftM teType $ anType $ getAnnotation e'
            either  (const $ if from == UnknownType then Just True else Nothing) Just
                    $ catCast cat ImplicitCastContext from to
        ann' = getAnnotation e
    removeDoubleCasts:: ScalarExpr -> ScalarExpr
    removeDoubleCasts e = fst $ accumulateCasts e
    -- For each implicit cast, if there is a sequence of implicit casts right under it,
    --    that remained after bottom-up application of the algorithm being described:
    --  1. Check if there is a type in the sequence (of argument types of implicit casts),
    --      which is implicitly castable to the target type of the current implicit cast,
    --      according to the current catalog.
    --  2. If there is such a type, replace a sequence of casts that starts at this type with
    --      a single cast, and shorten the list of casts to be further investigated (snd of
    --      output type of this function).
    --    2.1. Analyze the list bottom-up, so that the longest possible sequence of casts is
    --      replaced.
    --  3. If there is no such a type, just add the current cast to the list.
    -- Reset the list on a node other than ImplicitCast.
    accumulateCasts:: ScalarExpr -> (ScalarExpr,[(ScalarExpr,Type)])
    accumulateCasts e = case e of
        ImplicitCast a e' te
          ->  let (e1,ets) = accumulateCasts e'
                  eStart = ImplicitCast a e1 te
                  isCastable (_,t) = either (const False) id
                      $ catCast cat ImplicitCastContext t $ teType te
                  f z xs = case dropWhile (not . isCastable) xs of
                      [] -> z
                      xs'@((e'',_):rest) -> f (ImplicitCast a e'' te, xs') rest
              in case anType $ getAnnotation e1 of
                    Nothing -> (eStart,[]) -- cut here (should not happen in practice)
                    Just te1 -> f (eStart, (e1, teType te1):ets) ets
        _ -> (e,[])

nameOfType :: Type -> Maybe TypeName
nameOfType (ScalarType t) = Just $ SimpleTypeName emptyAnnotation (Name emptyAnnotation [Nmc $ T.unpack t])
-- a hack to support precision cast from string literals
nameOfType UnknownType = Just $ SimpleTypeName emptyAnnotation (Name emptyAnnotation [Nmc "unknown"])
nameOfType (DomainType t) = Just $ SimpleTypeName emptyAnnotation (Name emptyAnnotation [Nmc $ T.unpack t])
nameOfType (EnumType t) = Just $ SimpleTypeName emptyAnnotation (Name emptyAnnotation [Nmc $ T.unpack t])
nameOfType (NamedCompositeType t) = Just $ SimpleTypeName emptyAnnotation (Name emptyAnnotation [Nmc $ T.unpack t])
nameOfType _ = Nothing

-- hack for various fixups
fixTree :: Data a => Dialect -> a -> a
fixTree = fixMssqlDates

{-


disgusting hack to fix up datediff,datepart, convert and other
functions which accept a fixed list of keywords for one or more of the
arguments for sql server: set the type for the first argument to type
in if it is in the acceptable list.

This is really bad. What happens is that the normal typechecker will
check the keyword as an identifier and (usually!) put in unknown
identifier error. Then, when the function is typechecked, it will
ignore the type for this argument. After we've finished, the type
error is replaced with int type here.

The proper fix:

I think a good way to look at these is to consider them fixed enums
which can only accept a literal (and not an enum valued
expression). We set a flag/enum thing in the typecheck environment of
the identifier, so that it can check the identifier fits one of the
valid functions in the identifier itself. Then, there doesn't need to
be a fix here, and typechecking the function should work without a
hack here too. The typechecking of the function itself still needs
some special casing (e.g. for the convert function in odbc (and
similar in regular sql server syntax), the result type depends on the
value of the 'enum'. This can be implemented in a similar way to the
literal ints being passed to the function type checker.

This will be fixed with the rewrite of the findcallmatch/matchapp/a
million different fns for precision and nullability/tcApplike mess.

-}

fixMssqlDates :: Data a => Dialect -> a -> a
fixMssqlDates d = transformBi $ \x -> case x of
  App aa nm@(Name _ [Nmc fn]) [Identifier ai tn@(Name _ [Nmc tnn]),a,b]
    | map toLower fn `elem` ["datediff","dateadd"]
    , map toLower tnn `elem` dateparts ->
      App aa nm [Identifier (nai ai) tn,a,b]
  App aa nm@(Name _ [Nmc fn]) [Identifier ai tn@(Name _ [Nmc tnn]),a]
    | map toLower fn == "datepart"
    , map toLower tnn `elem` dateparts ->
      App aa nm [Identifier (nai ai) tn,a]
  App aa nm@(Name _ [Nmc fn]) [a,Identifier ai tn@(Name _ [Nmc tnn])]
    | map toLower fn == "convert"
    , map toLower tnn `elem` map fst odbcConvertTypes ->
      App aa nm [a,Identifier (nai ai) tn]
  App aa nm@(Name _ [Nmc fn]) (Identifier ai tn@(Name _ [Nmc tnn]):as)
    | map toLower fn `elem` ["timestampadd","timestampdiff"]
    , map toLower tnn `elem` odbcIntervalTypes ->
      App aa nm (Identifier (nai ai) tn:as)
  x' -> x'
  where
      dateparts :: [String]
      dateparts = ["day","dd","d","month","mm","m","year","yyyy"
                  ,"yy","quarter","qq","q","dayofyear","doy","dy","y"
                  ,"weekday","dw","week","ww","wk","hour","hh"
                  ,"minute","mi","n","second","ss","s","millisecond","ms"
                  ,"microsecond","mcs","nanosecond","ns"]
      -- todo: use canonical tsql name for typeInt
      nai ai = ai {anType = (mkTypeExtraNN . ScalarType) <$> ansiTypeNameToDialect d "int"
                  ,anErrs = []}


-- temp utility function

{-canonicalizeType :: Dialect -> Type -> Type
canonicalizeType d (ScalarType t) = ScalarType $ canonicalizeTypeName d t
canonicalizeType _ t = t-}

{-# LINE 521 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 20 "hssqlppp/src/Database/HsSqlPpp/Internals/Annotation.ag" #-}

-- | Represents a source file position, usually set by the parser.
type SourcePosition = (FilePath,Int,Int)

-- | Statement type is used for getting type information for a
-- parameterized statement. The first part is the args that the
-- parameterized statement needs, and the second is the names and types
-- of the output columns. No way to signal that a statement returns
-- exactly one row at the moment
type ParameterizedStatementType = ([T.Type],[(String,T.Type)])

{-# LINE 535 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 52 "hssqlppp/src/Database/HsSqlPpp/Internals/Annotation.ag" #-}


--some simple wrappers around uniplate for internal use. I'm not sure
--which of these are actually used

-- | An annotation value with no information.
emptyAnnotation :: Annotation
emptyAnnotation = Annotation Nothing Nothing [] Nothing []

-- | get the annotation for the root element of the tree passed
getAnnotation :: Data a => a -> Annotation
getAnnotation = head . childrenBi

--don't know how to do this one with uniplate

-- | Update the first annotation in a tree using the function supplied
updateAnnotation :: Data a => (Annotation -> Annotation) -> a -> a
updateAnnotation f = gmapT (mkT f)

{-# LINE 557 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 518 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.ag" #-}

nameComponents :: Name -> [NameComponent]
nameComponents (Name _ is) = is
-- todo: don't use error
nameComponents (AntiName _) = error "tried to get namecomponents of antiname"
{-# LINE 565 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 538 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.ag" #-}



data LiftFlavour = LiftAny | LiftAll
                   deriving (Show,Eq,Typeable,Data)

data Direction = Asc | Desc
                 deriving (Show,Eq,Typeable,Data)

data NullsOrder = NullsDefault | NullsFirst | NullsLast
                 deriving (Show,Eq,Typeable,Data)

data Distinct = Distinct | All
                deriving (Show,Eq,Typeable,Data)

-- maybe should improve this, since you can have at least union
-- distinct and union all just like select distinct and select all

data CombineType = Except | Union | Intersect | UnionAll
                   deriving (Show,Eq,Typeable,Data)

data IntervalField = IntervalYear
                   | IntervalMonth
                   | IntervalDay
                   | IntervalHour
                   | IntervalMinute
                   | IntervalSecond
                   | IntervalYearToMonth
                   | IntervalDayToHour
                   | IntervalDayToMinute
                   | IntervalDayToSecond
                   | IntervalHourToMinute
                   | IntervalHourToSecond
                   | IntervalMinuteToSecond
                     deriving (Show,Eq,Typeable,Data)

data ExtractField = ExtractCentury
                  | ExtractDay
                  | ExtractDecade
                  | ExtractDow
                  | ExtractDoy
                  | ExtractEpoch
                  | ExtractHour
                  | ExtractIsodow
                  | ExtractIsoyear
                  | ExtractMicroseconds
                  | ExtractMillennium
                  | ExtractMilliseconds
                  | ExtractMinute
                  | ExtractMonth
                  | ExtractQuarter
                  | ExtractSecond
                  | ExtractTimezone
                  | ExtractTimezoneHour
                  | ExtractTimezoneMinute
                  | ExtractWeek
                  | ExtractYear
                    deriving (Show,Eq,Typeable,Data)

-- todo: this needs fixing, it is currently based on limited frame options
data FrameClause = FrameUnboundedPreceding
                 | FrameUnboundedFull
                 | FrameRowsUnboundedPreceding
                   deriving (Show,Eq,Typeable,Data)


data OdbcLiteralType = OLDate
                     | OLTime
                     | OLTimestamp
                       deriving (Show,Eq,Typeable,Data)
{-# LINE 638 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 692 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.ag" #-}

data JoinType = Inner | LeftOuter| RightOuter | FullOuter | Cross
                deriving (Show,Eq,Typeable,Data)
data JoinHint = Loop | Hash | Merge
                deriving (Show,Eq,Typeable,Data)
data Natural = Natural | Unnatural
               deriving (Show,Eq,Typeable,Data)
{-# LINE 648 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 710 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.ag" #-}

-- | 'default' valued select, use for creating select values
--
-- > makeSelect :: QueryExpr
-- > makeSelect = Select
-- >              {ann = emptyAnnotation
-- >              ,selDistinct = All
-- >              ,selSelectList = (SelectList emptyAnnotation [])
-- >              ,selTref = []
-- >              ,selWhere = Nothing
-- >              ,selGroupBy = []
-- >              ,selHaving = Nothing
-- >              ,selOrderBy = []
-- >              ,selLimit = Nothing
-- >              ,selOffset = Nothing
-- >              ,selOption = []}
--
-- On its own, it isn't valid syntax: to use it you have to replace
-- the select list at minimum
--
-- use something like this
--
-- > s = makeSelect {selSelectList = sl [se $ i "a"]
-- >                ,selTref = [tref "t"]}
-- >     where
-- >         a = emptyAnnotation
-- >         sl = SelectList a
-- >         se = SelExp a
-- >         i = Identifier a
-- >         tref t = Tref a (Name a [Nmc t])

makeSelect :: QueryExpr
makeSelect = Select
             {ann = emptyAnnotation
             ,selDistinct = All
             ,selSelectList = (SelectList emptyAnnotation [])
             ,selTref = []
             ,selWhere = Nothing
             ,selGroupBy = []
             ,selHaving = Nothing
             ,selOrderBy = []
             ,selLimit = Nothing
             ,selOffset = Nothing
             ,selOption = []}
{-# LINE 695 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 1019 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.ag" #-}

data CopyFromSource = CopyFilename String
                    | Stdin
                      deriving (Show,Eq,Typeable,Data)
data CopyToSource = CopyTable Name [NameComponent]
                  | CopyQuery QueryExpr
                    deriving (Show,Eq,Typeable,Data)

data CopyFromOption = CopyFromFormat String
                    | CopyFromDelimiter String
                    | CopyFromErrorLog String
                    | CopyFromErrorVerbosity Int
                    | CopyFromParsers String
                    | CopyFromDirectory
                    | CopyFromOffset Integer
                    | CopyFromLimit Integer
                    | CopyFromErrorThreshold Int
                    | CopyFromNewlineFormat String
                  deriving (Show,Eq,Typeable,Data)

data CopyToOption = CopyToFormat String
                  | CopyToDelimiter String
                  | CopyToErrorLog String
                  | CopyToErrorVerbosity Int
                  deriving (Show,Eq,Typeable,Data)

{-# LINE 724 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 1110 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.ag" #-}

data TablePartitionDateTimeInterval = Year | Month | Day | Hour | Minute | Second | Millisecond
                                 deriving (Show,Eq,Typeable,Data)
{-# LINE 730 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 1173 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.ag" #-}

data SetValue
    = SetStr Annotation String
    | SetId Annotation String
    | SetNum Annotation Double
      deriving (Show,Eq,Typeable,Data)


data TriggerWhen = TriggerBefore | TriggerAfter
                   deriving (Show,Eq,Typeable,Data)
data TriggerEvent = TInsert| TUpdate | TDelete | AntiTriggerEvent String
                    deriving (Show,Eq,Typeable,Data)
data TriggerFire = EachRow | EachStatement
                   deriving (Show,Eq,Typeable,Data)

data DropType = Table
              | Domain
              | View
              | Type
              | Database
              | User
              | Login
              | Schema
                deriving (Show,Eq,Typeable,Data)

data Cascade = Cascade | Restrict
               deriving (Show,Eq,Typeable,Data)



data IfExists = Require | IfExists
                deriving (Show,Eq,Typeable,Data)


data RestartIdentity = RestartIdentity | ContinueIdentity
                       deriving (Show,Eq,Typeable,Data)

{-# LINE 770 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 1216 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.ag" #-}

data Replace = Replace | NoReplace
               deriving (Show,Eq,Typeable,Data)

data Volatility = Volatile | Stable | Immutable
                  deriving (Show,Eq,Typeable,Data)

-- todo: fix the fn body to support to support other languages
-- just as as string for now
-- probably change Language to be a string also

data Language = Sql | Plpgsql
                deriving (Show,Eq,Typeable,Data)
{-# LINE 786 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 1255 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.ag" #-}

data RaiseType = RNotice | RException | RError
                 deriving (Show,Eq,Typeable,Data)

{-# LINE 793 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 1269 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.ag" #-}

data QueryHint = QueryHintPartitionGroup | QueryHintColumnarHostGroup
                 deriving (Show,Eq,Typeable,Data)

{-# LINE 800 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}

{-# LINE 1375 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.ag" #-}

-- TODO: move this somewhere better
-- | run canonicalizeTypeName on all the TypeName nodes in an ast
{-canonicalizeTypeNames :: Data a => Dialect -> a -> a
canonicalizeTypeNames d =
   (transformBi $ \x ->
       case x of
         ScalarType s -> ScalarType $ canonicalizeTypeName d s
         x' -> x')
   . (transformBi $ \x ->
       case x of
         SimpleTypeName a tn -> SimpleTypeName a (c tn)
         PrecTypeName a tn i -> PrecTypeName a (c tn) i
         Prec2TypeName a tn i i1 -> Prec2TypeName a (c tn) i i1
         x' -> x')
   where
     c (Name a [Nmc nc]) = Name a [Nmc $ T.unpack $ canonicalizeTypeName d $ T.pack nc]
     c z = z-}

{-# LINE 822 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
-- AlterColumnAction -------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : AlterColumnAction 
         originalTree         : AlterColumnAction 
   alternatives:
      alternative SetDataType:
         child ann            : Annotation 
         child typ            : TypeName 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative SetNotNull:
         child ann            : Annotation 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative DropNotNull:
         child ann            : Annotation 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative SetDefault:
         child ann            : Annotation 
         child def            : ScalarExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative DropDefault:
         child ann            : Annotation 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data AlterColumnAction = SetDataType (Annotation) (TypeName)
                       | SetNotNull (Annotation)
                       | DropNotNull (Annotation)
                       | SetDefault (Annotation) (ScalarExpr)
                       | DropDefault (Annotation)
                       deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_AlterColumnAction :: AlterColumnAction ->
                         T_AlterColumnAction
_sem_AlterColumnAction (SetDataType _ann _typ) =
    (_sem_AlterColumnAction_SetDataType (_sem_Annotation _ann) (_sem_TypeName _typ))
_sem_AlterColumnAction (SetNotNull _ann) =
    (_sem_AlterColumnAction_SetNotNull (_sem_Annotation _ann))
_sem_AlterColumnAction (DropNotNull _ann) =
    (_sem_AlterColumnAction_DropNotNull (_sem_Annotation _ann))
_sem_AlterColumnAction (SetDefault _ann _def) =
    (_sem_AlterColumnAction_SetDefault (_sem_Annotation _ann) (_sem_ScalarExpr _def))
_sem_AlterColumnAction (DropDefault _ann) =
    (_sem_AlterColumnAction_DropDefault (_sem_Annotation _ann))
-- semantic domain
type T_AlterColumnAction = Catalog ->
                           TypeCheckFlags ->
                           (Maybe TypeExtra) ->
                           ( AlterColumnAction,AlterColumnAction)
data Inh_AlterColumnAction = Inh_AlterColumnAction {_cat_Inh_AlterColumnAction :: Catalog,_flags_Inh_AlterColumnAction :: TypeCheckFlags,_imCast_Inh_AlterColumnAction :: (Maybe TypeExtra)}
data Syn_AlterColumnAction = Syn_AlterColumnAction {_annotatedTree_Syn_AlterColumnAction :: AlterColumnAction,_originalTree_Syn_AlterColumnAction :: AlterColumnAction}
_wrap_AlterColumnAction :: T_AlterColumnAction ->
                          Inh_AlterColumnAction ->
                          Syn_AlterColumnAction
_wrap_AlterColumnAction sem (Inh_AlterColumnAction _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_AlterColumnAction _lhsOannotatedTree _lhsOoriginalTree))
_sem_AlterColumnAction_SetDataType :: T_Annotation ->
                                     T_TypeName ->
                                     T_AlterColumnAction
_sem_AlterColumnAction_SetDataType ann_ typ_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterColumnAction
              _lhsOoriginalTree :: AlterColumnAction
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _typOcat :: Catalog
              _typOflags :: TypeCheckFlags
              _typOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _typIannotatedTree :: TypeName
              _typInamedType :: (Maybe TypeExtra)
              _typIoriginalTree :: TypeName
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 24, column 37)
              _annOtpe =
                  ({-# LINE 24 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 919 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SetDataType _annIannotatedTree _typIannotatedTree
                   {-# LINE 925 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SetDataType _annIoriginalTree _typIoriginalTree
                   {-# LINE 931 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 937 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 943 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 949 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 955 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 961 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 967 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 973 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 979 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _typIannotatedTree,_typInamedType,_typIoriginalTree) =
                  typ_ _typOcat _typOflags _typOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterColumnAction_SetNotNull :: T_Annotation ->
                                    T_AlterColumnAction
_sem_AlterColumnAction_SetNotNull ann_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterColumnAction
              _lhsOoriginalTree :: AlterColumnAction
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 29, column 36)
              _annOtpe =
                  ({-# LINE 29 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 1004 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SetNotNull _annIannotatedTree
                   {-# LINE 1010 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SetNotNull _annIoriginalTree
                   {-# LINE 1016 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 1022 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 1028 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 1034 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 1040 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 1046 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterColumnAction_DropNotNull :: T_Annotation ->
                                     T_AlterColumnAction
_sem_AlterColumnAction_DropNotNull ann_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterColumnAction
              _lhsOoriginalTree :: AlterColumnAction
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 23, column 37)
              _annOtpe =
                  ({-# LINE 23 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 1069 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   DropNotNull _annIannotatedTree
                   {-# LINE 1075 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   DropNotNull _annIoriginalTree
                   {-# LINE 1081 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 1087 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 1093 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 1099 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 1105 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 1111 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterColumnAction_SetDefault :: T_Annotation ->
                                    T_ScalarExpr ->
                                    T_AlterColumnAction
_sem_AlterColumnAction_SetDefault ann_ def_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _defOdownEnv :: Environment
              _defOexpectedCast :: Bool
              _defOexpectedType :: (Maybe TypeExtra)
              _defOodbcFunction :: Bool
              _defOassignmentCastContext :: Bool
              _lhsOannotatedTree :: AlterColumnAction
              _lhsOoriginalTree :: AlterColumnAction
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _defOcat :: Catalog
              _defOflags :: TypeCheckFlags
              _defOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _defIannotatedTree :: ScalarExpr
              _defIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _defIoriginalTree :: ScalarExpr
              _defIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 25, column 36)
              _annOtpe =
                  ({-# LINE 25 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 1147 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 26, column 36)
              _defOdownEnv =
                  ({-# LINE 26 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 1153 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 27, column 36)
              _defOexpectedCast =
                  ({-# LINE 27 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 1159 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 28, column 36)
              _defOexpectedType =
                  ({-# LINE 28 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 1165 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 131, column 18)
              _defOodbcFunction =
                  ({-# LINE 131 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 1171 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 806, column 36)
              _defOassignmentCastContext =
                  ({-# LINE 806 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 1177 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SetDefault _annIannotatedTree _defIannotatedTree
                   {-# LINE 1183 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SetDefault _annIoriginalTree _defIoriginalTree
                   {-# LINE 1189 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 1195 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 1201 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 1207 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 1213 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 1219 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _defOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 1225 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _defOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 1231 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _defOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 1237 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _defIannotatedTree,_defIcolExprs,_defIoriginalTree,_defIupType) =
                  def_ _defOassignmentCastContext _defOcat _defOdownEnv _defOexpectedCast _defOexpectedType _defOflags _defOimCast _defOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterColumnAction_DropDefault :: T_Annotation ->
                                     T_AlterColumnAction
_sem_AlterColumnAction_DropDefault ann_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterColumnAction
              _lhsOoriginalTree :: AlterColumnAction
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 22, column 37)
              _annOtpe =
                  ({-# LINE 22 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 1262 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   DropDefault _annIannotatedTree
                   {-# LINE 1268 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   DropDefault _annIoriginalTree
                   {-# LINE 1274 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 1280 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 1286 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 1292 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 1298 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 1304 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- AlterDatabaseOperation --------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : AlterDatabaseOperation 
         originalTree         : AlterDatabaseOperation 
   alternatives:
      alternative RenameDatabase:
         child ann            : Annotation 
         child newName        : Name 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data AlterDatabaseOperation = RenameDatabase (Annotation) (Name)
                            deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_AlterDatabaseOperation :: AlterDatabaseOperation ->
                              T_AlterDatabaseOperation
_sem_AlterDatabaseOperation (RenameDatabase _ann _newName) =
    (_sem_AlterDatabaseOperation_RenameDatabase (_sem_Annotation _ann) (_sem_Name _newName))
-- semantic domain
type T_AlterDatabaseOperation = Catalog ->
                                TypeCheckFlags ->
                                (Maybe TypeExtra) ->
                                ( AlterDatabaseOperation,AlterDatabaseOperation)
data Inh_AlterDatabaseOperation = Inh_AlterDatabaseOperation {_cat_Inh_AlterDatabaseOperation :: Catalog,_flags_Inh_AlterDatabaseOperation :: TypeCheckFlags,_imCast_Inh_AlterDatabaseOperation :: (Maybe TypeExtra)}
data Syn_AlterDatabaseOperation = Syn_AlterDatabaseOperation {_annotatedTree_Syn_AlterDatabaseOperation :: AlterDatabaseOperation,_originalTree_Syn_AlterDatabaseOperation :: AlterDatabaseOperation}
_wrap_AlterDatabaseOperation :: T_AlterDatabaseOperation ->
                               Inh_AlterDatabaseOperation ->
                               Syn_AlterDatabaseOperation
_wrap_AlterDatabaseOperation sem (Inh_AlterDatabaseOperation _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_AlterDatabaseOperation _lhsOannotatedTree _lhsOoriginalTree))
_sem_AlterDatabaseOperation_RenameDatabase :: T_Annotation ->
                                             T_Name ->
                                             T_AlterDatabaseOperation
_sem_AlterDatabaseOperation_RenameDatabase ann_ newName_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _newNameOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterDatabaseOperation
              _lhsOoriginalTree :: AlterDatabaseOperation
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _newNameOcat :: Catalog
              _newNameOflags :: TypeCheckFlags
              _newNameOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _newNameIannotatedTree :: Name
              _newNameIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 30, column 45)
              _annOtpe =
                  ({-# LINE 30 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 1372 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 31, column 45)
              _newNameOtpe =
                  ({-# LINE 31 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 1378 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   RenameDatabase _annIannotatedTree _newNameIannotatedTree
                   {-# LINE 1384 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   RenameDatabase _annIoriginalTree _newNameIoriginalTree
                   {-# LINE 1390 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 1396 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 1402 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 1408 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 1414 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 1420 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _newNameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 1426 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _newNameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 1432 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _newNameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 1438 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _newNameIannotatedTree,_newNameIoriginalTree) =
                  newName_ _newNameOcat _newNameOflags _newNameOimCast _newNameOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- AlterSchemaOperation ----------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : AlterSchemaOperation 
         originalTree         : AlterSchemaOperation 
   alternatives:
      alternative AlterSchemaName:
         child ann            : Annotation 
         child newName        : {NameComponent}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterSchemaOwner:
         child ann            : Annotation 
         child newName        : Name 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data AlterSchemaOperation = AlterSchemaName (Annotation) (NameComponent)
                          | AlterSchemaOwner (Annotation) (Name)
                          deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_AlterSchemaOperation :: AlterSchemaOperation ->
                            T_AlterSchemaOperation
_sem_AlterSchemaOperation (AlterSchemaName _ann _newName) =
    (_sem_AlterSchemaOperation_AlterSchemaName (_sem_Annotation _ann) _newName)
_sem_AlterSchemaOperation (AlterSchemaOwner _ann _newName) =
    (_sem_AlterSchemaOperation_AlterSchemaOwner (_sem_Annotation _ann) (_sem_Name _newName))
-- semantic domain
type T_AlterSchemaOperation = Catalog ->
                              TypeCheckFlags ->
                              (Maybe TypeExtra) ->
                              ( AlterSchemaOperation,AlterSchemaOperation)
data Inh_AlterSchemaOperation = Inh_AlterSchemaOperation {_cat_Inh_AlterSchemaOperation :: Catalog,_flags_Inh_AlterSchemaOperation :: TypeCheckFlags,_imCast_Inh_AlterSchemaOperation :: (Maybe TypeExtra)}
data Syn_AlterSchemaOperation = Syn_AlterSchemaOperation {_annotatedTree_Syn_AlterSchemaOperation :: AlterSchemaOperation,_originalTree_Syn_AlterSchemaOperation :: AlterSchemaOperation}
_wrap_AlterSchemaOperation :: T_AlterSchemaOperation ->
                             Inh_AlterSchemaOperation ->
                             Syn_AlterSchemaOperation
_wrap_AlterSchemaOperation sem (Inh_AlterSchemaOperation _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_AlterSchemaOperation _lhsOannotatedTree _lhsOoriginalTree))
_sem_AlterSchemaOperation_AlterSchemaName :: T_Annotation ->
                                            NameComponent ->
                                            T_AlterSchemaOperation
_sem_AlterSchemaOperation_AlterSchemaName ann_ newName_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterSchemaOperation
              _lhsOoriginalTree :: AlterSchemaOperation
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 32, column 44)
              _annOtpe =
                  ({-# LINE 32 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 1511 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSchemaName _annIannotatedTree newName_
                   {-# LINE 1517 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSchemaName _annIoriginalTree newName_
                   {-# LINE 1523 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 1529 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 1535 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 1541 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 1547 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 1553 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterSchemaOperation_AlterSchemaOwner :: T_Annotation ->
                                             T_Name ->
                                             T_AlterSchemaOperation
_sem_AlterSchemaOperation_AlterSchemaOwner ann_ newName_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _newNameOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterSchemaOperation
              _lhsOoriginalTree :: AlterSchemaOperation
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _newNameOcat :: Catalog
              _newNameOflags :: TypeCheckFlags
              _newNameOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _newNameIannotatedTree :: Name
              _newNameIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 33, column 45)
              _annOtpe =
                  ({-# LINE 33 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 1583 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 34, column 45)
              _newNameOtpe =
                  ({-# LINE 34 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 1589 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSchemaOwner _annIannotatedTree _newNameIannotatedTree
                   {-# LINE 1595 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSchemaOwner _annIoriginalTree _newNameIoriginalTree
                   {-# LINE 1601 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 1607 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 1613 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 1619 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 1625 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 1631 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _newNameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 1637 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _newNameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 1643 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _newNameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 1649 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _newNameIannotatedTree,_newNameIoriginalTree) =
                  newName_ _newNameOcat _newNameOflags _newNameOimCast _newNameOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- AlterSequenceAction -----------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : AlterSequenceAction 
         originalTree         : AlterSequenceAction 
   alternatives:
      alternative AlterSequenceIncrement:
         child ann            : Annotation 
         child incr           : {Integer}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterSequenceMin:
         child ann            : Annotation 
         child min            : {Maybe Integer}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterSequenceMax:
         child ann            : Annotation 
         child max            : {Maybe Integer}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterSequenceStart:
         child ann            : Annotation 
         child start          : {Integer}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterSequenceRestart:
         child ann            : Annotation 
         child restart        : {Maybe Integer}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterSequenceCache:
         child ann            : Annotation 
         child cache          : {Integer}
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data AlterSequenceAction = AlterSequenceIncrement (Annotation) (Integer)
                         | AlterSequenceMin (Annotation) ((Maybe Integer))
                         | AlterSequenceMax (Annotation) ((Maybe Integer))
                         | AlterSequenceStart (Annotation) (Integer)
                         | AlterSequenceRestart (Annotation) ((Maybe Integer))
                         | AlterSequenceCache (Annotation) (Integer)
                         deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_AlterSequenceAction :: AlterSequenceAction ->
                           T_AlterSequenceAction
_sem_AlterSequenceAction (AlterSequenceIncrement _ann _incr) =
    (_sem_AlterSequenceAction_AlterSequenceIncrement (_sem_Annotation _ann) _incr)
_sem_AlterSequenceAction (AlterSequenceMin _ann _min) =
    (_sem_AlterSequenceAction_AlterSequenceMin (_sem_Annotation _ann) _min)
_sem_AlterSequenceAction (AlterSequenceMax _ann _max) =
    (_sem_AlterSequenceAction_AlterSequenceMax (_sem_Annotation _ann) _max)
_sem_AlterSequenceAction (AlterSequenceStart _ann _start) =
    (_sem_AlterSequenceAction_AlterSequenceStart (_sem_Annotation _ann) _start)
_sem_AlterSequenceAction (AlterSequenceRestart _ann _restart) =
    (_sem_AlterSequenceAction_AlterSequenceRestart (_sem_Annotation _ann) _restart)
_sem_AlterSequenceAction (AlterSequenceCache _ann _cache) =
    (_sem_AlterSequenceAction_AlterSequenceCache (_sem_Annotation _ann) _cache)
-- semantic domain
type T_AlterSequenceAction = Catalog ->
                             TypeCheckFlags ->
                             (Maybe TypeExtra) ->
                             ( AlterSequenceAction,AlterSequenceAction)
data Inh_AlterSequenceAction = Inh_AlterSequenceAction {_cat_Inh_AlterSequenceAction :: Catalog,_flags_Inh_AlterSequenceAction :: TypeCheckFlags,_imCast_Inh_AlterSequenceAction :: (Maybe TypeExtra)}
data Syn_AlterSequenceAction = Syn_AlterSequenceAction {_annotatedTree_Syn_AlterSequenceAction :: AlterSequenceAction,_originalTree_Syn_AlterSequenceAction :: AlterSequenceAction}
_wrap_AlterSequenceAction :: T_AlterSequenceAction ->
                            Inh_AlterSequenceAction ->
                            Syn_AlterSequenceAction
_wrap_AlterSequenceAction sem (Inh_AlterSequenceAction _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_AlterSequenceAction _lhsOannotatedTree _lhsOoriginalTree))
_sem_AlterSequenceAction_AlterSequenceIncrement :: T_Annotation ->
                                                  Integer ->
                                                  T_AlterSequenceAction
_sem_AlterSequenceAction_AlterSequenceIncrement ann_ incr_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterSequenceAction
              _lhsOoriginalTree :: AlterSequenceAction
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 35, column 50)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 1758 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceIncrement _annIannotatedTree incr_
                   {-# LINE 1764 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceIncrement _annIoriginalTree incr_
                   {-# LINE 1770 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 1776 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 1782 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 1788 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 1794 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 1800 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterSequenceAction_AlterSequenceMin :: T_Annotation ->
                                            (Maybe Integer) ->
                                            T_AlterSequenceAction
_sem_AlterSequenceAction_AlterSequenceMin ann_ min_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterSequenceAction
              _lhsOoriginalTree :: AlterSequenceAction
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 36, column 44)
              _annOtpe =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 1824 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceMin _annIannotatedTree min_
                   {-# LINE 1830 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceMin _annIoriginalTree min_
                   {-# LINE 1836 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 1842 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 1848 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 1854 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 1860 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 1866 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterSequenceAction_AlterSequenceMax :: T_Annotation ->
                                            (Maybe Integer) ->
                                            T_AlterSequenceAction
_sem_AlterSequenceAction_AlterSequenceMax ann_ max_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterSequenceAction
              _lhsOoriginalTree :: AlterSequenceAction
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 37, column 44)
              _annOtpe =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 1890 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceMax _annIannotatedTree max_
                   {-# LINE 1896 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceMax _annIoriginalTree max_
                   {-# LINE 1902 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 1908 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 1914 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 1920 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 1926 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 1932 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterSequenceAction_AlterSequenceStart :: T_Annotation ->
                                              Integer ->
                                              T_AlterSequenceAction
_sem_AlterSequenceAction_AlterSequenceStart ann_ start_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterSequenceAction
              _lhsOoriginalTree :: AlterSequenceAction
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 38, column 46)
              _annOtpe =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 1956 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceStart _annIannotatedTree start_
                   {-# LINE 1962 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceStart _annIoriginalTree start_
                   {-# LINE 1968 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 1974 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 1980 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 1986 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 1992 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 1998 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterSequenceAction_AlterSequenceRestart :: T_Annotation ->
                                                (Maybe Integer) ->
                                                T_AlterSequenceAction
_sem_AlterSequenceAction_AlterSequenceRestart ann_ restart_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterSequenceAction
              _lhsOoriginalTree :: AlterSequenceAction
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 39, column 48)
              _annOtpe =
                  ({-# LINE 39 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 2022 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceRestart _annIannotatedTree restart_
                   {-# LINE 2028 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceRestart _annIoriginalTree restart_
                   {-# LINE 2034 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 2040 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 2046 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 2052 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 2058 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 2064 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterSequenceAction_AlterSequenceCache :: T_Annotation ->
                                              Integer ->
                                              T_AlterSequenceAction
_sem_AlterSequenceAction_AlterSequenceCache ann_ cache_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterSequenceAction
              _lhsOoriginalTree :: AlterSequenceAction
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 40, column 46)
              _annOtpe =
                  ({-# LINE 40 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 2088 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceCache _annIannotatedTree cache_
                   {-# LINE 2094 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceCache _annIoriginalTree cache_
                   {-# LINE 2100 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 2106 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 2112 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 2118 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 2124 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 2130 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- AlterSequenceActionList -------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : AlterSequenceActionList 
         originalTree         : AlterSequenceActionList 
   alternatives:
      alternative Cons:
         child hd             : AlterSequenceAction 
         child tl             : AlterSequenceActionList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type AlterSequenceActionList = [AlterSequenceAction]
-- cata
_sem_AlterSequenceActionList :: AlterSequenceActionList ->
                               T_AlterSequenceActionList
_sem_AlterSequenceActionList list =
    (Prelude.foldr _sem_AlterSequenceActionList_Cons _sem_AlterSequenceActionList_Nil (Prelude.map _sem_AlterSequenceAction list))
-- semantic domain
type T_AlterSequenceActionList = Catalog ->
                                 TypeCheckFlags ->
                                 (Maybe TypeExtra) ->
                                 ( AlterSequenceActionList,AlterSequenceActionList)
data Inh_AlterSequenceActionList = Inh_AlterSequenceActionList {_cat_Inh_AlterSequenceActionList :: Catalog,_flags_Inh_AlterSequenceActionList :: TypeCheckFlags,_imCast_Inh_AlterSequenceActionList :: (Maybe TypeExtra)}
data Syn_AlterSequenceActionList = Syn_AlterSequenceActionList {_annotatedTree_Syn_AlterSequenceActionList :: AlterSequenceActionList,_originalTree_Syn_AlterSequenceActionList :: AlterSequenceActionList}
_wrap_AlterSequenceActionList :: T_AlterSequenceActionList ->
                                Inh_AlterSequenceActionList ->
                                Syn_AlterSequenceActionList
_wrap_AlterSequenceActionList sem (Inh_AlterSequenceActionList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_AlterSequenceActionList _lhsOannotatedTree _lhsOoriginalTree))
_sem_AlterSequenceActionList_Cons :: T_AlterSequenceAction ->
                                    T_AlterSequenceActionList ->
                                    T_AlterSequenceActionList
_sem_AlterSequenceActionList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: AlterSequenceActionList
              _lhsOoriginalTree :: AlterSequenceActionList
              _hdOcat :: Catalog
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: AlterSequenceAction
              _hdIoriginalTree :: AlterSequenceAction
              _tlIannotatedTree :: AlterSequenceActionList
              _tlIoriginalTree :: AlterSequenceActionList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 2199 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 2205 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 2211 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 2217 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 2223 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 2229 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 2235 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 2241 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 2247 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 2253 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree) =
                  hd_ _hdOcat _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterSequenceActionList_Nil :: T_AlterSequenceActionList
_sem_AlterSequenceActionList_Nil =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: AlterSequenceActionList
              _lhsOoriginalTree :: AlterSequenceActionList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 2271 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 2277 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 2283 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 2289 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- AlterSequenceOperation --------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : AlterSequenceOperation 
         originalTree         : AlterSequenceOperation 
   alternatives:
      alternative AlterSequenceOwned:
         child ann            : Annotation 
         child owned          : Name 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterSequenceRename:
         child ann            : Annotation 
         child name           : Name 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterSequenceActions:
         child ann            : Annotation 
         child actions        : AlterSequenceActionList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data AlterSequenceOperation = AlterSequenceOwned (Annotation) (Name)
                            | AlterSequenceRename (Annotation) (Name)
                            | AlterSequenceActions (Annotation) (AlterSequenceActionList)
                            deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_AlterSequenceOperation :: AlterSequenceOperation ->
                              T_AlterSequenceOperation
_sem_AlterSequenceOperation (AlterSequenceOwned _ann _owned) =
    (_sem_AlterSequenceOperation_AlterSequenceOwned (_sem_Annotation _ann) (_sem_Name _owned))
_sem_AlterSequenceOperation (AlterSequenceRename _ann _name) =
    (_sem_AlterSequenceOperation_AlterSequenceRename (_sem_Annotation _ann) (_sem_Name _name))
_sem_AlterSequenceOperation (AlterSequenceActions _ann _actions) =
    (_sem_AlterSequenceOperation_AlterSequenceActions (_sem_Annotation _ann) (_sem_AlterSequenceActionList _actions))
-- semantic domain
type T_AlterSequenceOperation = Catalog ->
                                TypeCheckFlags ->
                                (Maybe TypeExtra) ->
                                ( AlterSequenceOperation,AlterSequenceOperation)
data Inh_AlterSequenceOperation = Inh_AlterSequenceOperation {_cat_Inh_AlterSequenceOperation :: Catalog,_flags_Inh_AlterSequenceOperation :: TypeCheckFlags,_imCast_Inh_AlterSequenceOperation :: (Maybe TypeExtra)}
data Syn_AlterSequenceOperation = Syn_AlterSequenceOperation {_annotatedTree_Syn_AlterSequenceOperation :: AlterSequenceOperation,_originalTree_Syn_AlterSequenceOperation :: AlterSequenceOperation}
_wrap_AlterSequenceOperation :: T_AlterSequenceOperation ->
                               Inh_AlterSequenceOperation ->
                               Syn_AlterSequenceOperation
_wrap_AlterSequenceOperation sem (Inh_AlterSequenceOperation _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_AlterSequenceOperation _lhsOannotatedTree _lhsOoriginalTree))
_sem_AlterSequenceOperation_AlterSequenceOwned :: T_Annotation ->
                                                 T_Name ->
                                                 T_AlterSequenceOperation
_sem_AlterSequenceOperation_AlterSequenceOwned ann_ owned_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _ownedOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterSequenceOperation
              _lhsOoriginalTree :: AlterSequenceOperation
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _ownedOcat :: Catalog
              _ownedOflags :: TypeCheckFlags
              _ownedOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _ownedIannotatedTree :: Name
              _ownedIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 41, column 49)
              _annOtpe =
                  ({-# LINE 41 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 2373 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 42, column 49)
              _ownedOtpe =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 2379 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceOwned _annIannotatedTree _ownedIannotatedTree
                   {-# LINE 2385 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceOwned _annIoriginalTree _ownedIoriginalTree
                   {-# LINE 2391 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 2397 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 2403 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 2409 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 2415 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 2421 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _ownedOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 2427 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _ownedOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 2433 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _ownedOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 2439 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _ownedIannotatedTree,_ownedIoriginalTree) =
                  owned_ _ownedOcat _ownedOflags _ownedOimCast _ownedOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterSequenceOperation_AlterSequenceRename :: T_Annotation ->
                                                  T_Name ->
                                                  T_AlterSequenceOperation
_sem_AlterSequenceOperation_AlterSequenceRename ann_ name_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _nameOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterSequenceOperation
              _lhsOoriginalTree :: AlterSequenceOperation
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nameOcat :: Catalog
              _nameOflags :: TypeCheckFlags
              _nameOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nameIannotatedTree :: Name
              _nameIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 43, column 50)
              _annOtpe =
                  ({-# LINE 43 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 2471 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 44, column 50)
              _nameOtpe =
                  ({-# LINE 44 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 2477 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceRename _annIannotatedTree _nameIannotatedTree
                   {-# LINE 2483 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceRename _annIoriginalTree _nameIoriginalTree
                   {-# LINE 2489 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 2495 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 2501 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 2507 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 2513 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 2519 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 2525 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 2531 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 2537 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nameIannotatedTree,_nameIoriginalTree) =
                  name_ _nameOcat _nameOflags _nameOimCast _nameOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterSequenceOperation_AlterSequenceActions :: T_Annotation ->
                                                   T_AlterSequenceActionList ->
                                                   T_AlterSequenceOperation
_sem_AlterSequenceOperation_AlterSequenceActions ann_ actions_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterSequenceOperation
              _lhsOoriginalTree :: AlterSequenceOperation
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _actionsOcat :: Catalog
              _actionsOflags :: TypeCheckFlags
              _actionsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _actionsIannotatedTree :: AlterSequenceActionList
              _actionsIoriginalTree :: AlterSequenceActionList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 45, column 51)
              _annOtpe =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 2568 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceActions _annIannotatedTree _actionsIannotatedTree
                   {-# LINE 2574 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequenceActions _annIoriginalTree _actionsIoriginalTree
                   {-# LINE 2580 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 2586 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 2592 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 2598 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 2604 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 2610 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _actionsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 2616 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _actionsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 2622 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _actionsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 2628 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _actionsIannotatedTree,_actionsIoriginalTree) =
                  actions_ _actionsOcat _actionsOflags _actionsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- AlterTableAction --------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : AlterTableAction 
         originalTree         : AlterTableAction 
   alternatives:
      alternative AddColumn:
         child ann            : Annotation 
         child att            : AttributeDef 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative DropColumn:
         child ann            : Annotation 
         child nm             : {NameComponent}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterColumn:
         child ann            : Annotation 
         child nm             : {NameComponent}
         child act            : AlterColumnAction 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AddConstraint:
         child ann            : Annotation 
         child con            : Constraint 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data AlterTableAction = AddColumn (Annotation) (AttributeDef)
                      | DropColumn (Annotation) (NameComponent)
                      | AlterColumn (Annotation) (NameComponent) (AlterColumnAction)
                      | AddConstraint (Annotation) (Constraint)
                      deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_AlterTableAction :: AlterTableAction ->
                        T_AlterTableAction
_sem_AlterTableAction (AddColumn _ann _att) =
    (_sem_AlterTableAction_AddColumn (_sem_Annotation _ann) (_sem_AttributeDef _att))
_sem_AlterTableAction (DropColumn _ann _nm) =
    (_sem_AlterTableAction_DropColumn (_sem_Annotation _ann) _nm)
_sem_AlterTableAction (AlterColumn _ann _nm _act) =
    (_sem_AlterTableAction_AlterColumn (_sem_Annotation _ann) _nm (_sem_AlterColumnAction _act))
_sem_AlterTableAction (AddConstraint _ann _con) =
    (_sem_AlterTableAction_AddConstraint (_sem_Annotation _ann) (_sem_Constraint _con))
-- semantic domain
type T_AlterTableAction = Catalog ->
                          TypeCheckFlags ->
                          (Maybe TypeExtra) ->
                          ( AlterTableAction,AlterTableAction)
data Inh_AlterTableAction = Inh_AlterTableAction {_cat_Inh_AlterTableAction :: Catalog,_flags_Inh_AlterTableAction :: TypeCheckFlags,_imCast_Inh_AlterTableAction :: (Maybe TypeExtra)}
data Syn_AlterTableAction = Syn_AlterTableAction {_annotatedTree_Syn_AlterTableAction :: AlterTableAction,_originalTree_Syn_AlterTableAction :: AlterTableAction}
_wrap_AlterTableAction :: T_AlterTableAction ->
                         Inh_AlterTableAction ->
                         Syn_AlterTableAction
_wrap_AlterTableAction sem (Inh_AlterTableAction _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_AlterTableAction _lhsOannotatedTree _lhsOoriginalTree))
_sem_AlterTableAction_AddColumn :: T_Annotation ->
                                  T_AttributeDef ->
                                  T_AlterTableAction
_sem_AlterTableAction_AddColumn ann_ att_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterTableAction
              _lhsOoriginalTree :: AlterTableAction
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _attOcat :: Catalog
              _attOflags :: TypeCheckFlags
              _attOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _attIannotatedTree :: AttributeDef
              _attIoriginalTree :: AttributeDef
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 46, column 34)
              _annOtpe =
                  ({-# LINE 46 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 2725 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AddColumn _annIannotatedTree _attIannotatedTree
                   {-# LINE 2731 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AddColumn _annIoriginalTree _attIoriginalTree
                   {-# LINE 2737 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 2743 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 2749 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 2755 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 2761 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 2767 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _attOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 2773 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _attOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 2779 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _attOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 2785 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _attIannotatedTree,_attIoriginalTree) =
                  att_ _attOcat _attOflags _attOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterTableAction_DropColumn :: T_Annotation ->
                                   NameComponent ->
                                   T_AlterTableAction
_sem_AlterTableAction_DropColumn ann_ nm_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterTableAction
              _lhsOoriginalTree :: AlterTableAction
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 49, column 35)
              _annOtpe =
                  ({-# LINE 49 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 2811 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   DropColumn _annIannotatedTree nm_
                   {-# LINE 2817 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   DropColumn _annIoriginalTree nm_
                   {-# LINE 2823 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 2829 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 2835 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 2841 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 2847 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 2853 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterTableAction_AlterColumn :: T_Annotation ->
                                    NameComponent ->
                                    T_AlterColumnAction ->
                                    T_AlterTableAction
_sem_AlterTableAction_AlterColumn ann_ nm_ act_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterTableAction
              _lhsOoriginalTree :: AlterTableAction
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _actOcat :: Catalog
              _actOflags :: TypeCheckFlags
              _actOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _actIannotatedTree :: AlterColumnAction
              _actIoriginalTree :: AlterColumnAction
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 48, column 36)
              _annOtpe =
                  ({-# LINE 48 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 2883 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterColumn _annIannotatedTree nm_ _actIannotatedTree
                   {-# LINE 2889 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterColumn _annIoriginalTree nm_ _actIoriginalTree
                   {-# LINE 2895 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 2901 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 2907 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 2913 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 2919 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 2925 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _actOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 2931 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _actOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 2937 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _actOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 2943 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _actIannotatedTree,_actIoriginalTree) =
                  act_ _actOcat _actOflags _actOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterTableAction_AddConstraint :: T_Annotation ->
                                      T_Constraint ->
                                      T_AlterTableAction
_sem_AlterTableAction_AddConstraint ann_ con_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterTableAction
              _lhsOoriginalTree :: AlterTableAction
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _conOcat :: Catalog
              _conOflags :: TypeCheckFlags
              _conOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _conIannotatedTree :: Constraint
              _conIoriginalTree :: Constraint
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 47, column 38)
              _annOtpe =
                  ({-# LINE 47 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 2974 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AddConstraint _annIannotatedTree _conIannotatedTree
                   {-# LINE 2980 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AddConstraint _annIoriginalTree _conIoriginalTree
                   {-# LINE 2986 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 2992 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 2998 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 3004 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 3010 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 3016 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _conOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 3022 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _conOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 3028 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _conOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 3034 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _conIannotatedTree,_conIoriginalTree) =
                  con_ _conOcat _conOflags _conOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- AlterTableActionList ----------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : AlterTableActionList 
         originalTree         : AlterTableActionList 
   alternatives:
      alternative Cons:
         child hd             : AlterTableAction 
         child tl             : AlterTableActionList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type AlterTableActionList = [AlterTableAction]
-- cata
_sem_AlterTableActionList :: AlterTableActionList ->
                            T_AlterTableActionList
_sem_AlterTableActionList list =
    (Prelude.foldr _sem_AlterTableActionList_Cons _sem_AlterTableActionList_Nil (Prelude.map _sem_AlterTableAction list))
-- semantic domain
type T_AlterTableActionList = Catalog ->
                              TypeCheckFlags ->
                              (Maybe TypeExtra) ->
                              ( AlterTableActionList,AlterTableActionList)
data Inh_AlterTableActionList = Inh_AlterTableActionList {_cat_Inh_AlterTableActionList :: Catalog,_flags_Inh_AlterTableActionList :: TypeCheckFlags,_imCast_Inh_AlterTableActionList :: (Maybe TypeExtra)}
data Syn_AlterTableActionList = Syn_AlterTableActionList {_annotatedTree_Syn_AlterTableActionList :: AlterTableActionList,_originalTree_Syn_AlterTableActionList :: AlterTableActionList}
_wrap_AlterTableActionList :: T_AlterTableActionList ->
                             Inh_AlterTableActionList ->
                             Syn_AlterTableActionList
_wrap_AlterTableActionList sem (Inh_AlterTableActionList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_AlterTableActionList _lhsOannotatedTree _lhsOoriginalTree))
_sem_AlterTableActionList_Cons :: T_AlterTableAction ->
                                 T_AlterTableActionList ->
                                 T_AlterTableActionList
_sem_AlterTableActionList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: AlterTableActionList
              _lhsOoriginalTree :: AlterTableActionList
              _hdOcat :: Catalog
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: AlterTableAction
              _hdIoriginalTree :: AlterTableAction
              _tlIannotatedTree :: AlterTableActionList
              _tlIoriginalTree :: AlterTableActionList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 3105 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 3111 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 3117 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 3123 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 3129 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 3135 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 3141 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 3147 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 3153 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 3159 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree) =
                  hd_ _hdOcat _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterTableActionList_Nil :: T_AlterTableActionList
_sem_AlterTableActionList_Nil =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: AlterTableActionList
              _lhsOoriginalTree :: AlterTableActionList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 3177 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 3183 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 3189 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 3195 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- AlterTableOperation -----------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : AlterTableOperation 
         originalTree         : AlterTableOperation 
   alternatives:
      alternative RenameTable:
         child ann            : Annotation 
         child newName        : Name 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative RenameColumn:
         child ann            : Annotation 
         child oldName        : {NameComponent}
         child newName        : {NameComponent}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterTableActions:
         child ann            : Annotation 
         child actions        : AlterTableActionList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data AlterTableOperation = RenameTable (Annotation) (Name)
                         | RenameColumn (Annotation) (NameComponent) (NameComponent)
                         | AlterTableActions (Annotation) (AlterTableActionList)
                         deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_AlterTableOperation :: AlterTableOperation ->
                           T_AlterTableOperation
_sem_AlterTableOperation (RenameTable _ann _newName) =
    (_sem_AlterTableOperation_RenameTable (_sem_Annotation _ann) (_sem_Name _newName))
_sem_AlterTableOperation (RenameColumn _ann _oldName _newName) =
    (_sem_AlterTableOperation_RenameColumn (_sem_Annotation _ann) _oldName _newName)
_sem_AlterTableOperation (AlterTableActions _ann _actions) =
    (_sem_AlterTableOperation_AlterTableActions (_sem_Annotation _ann) (_sem_AlterTableActionList _actions))
-- semantic domain
type T_AlterTableOperation = Catalog ->
                             TypeCheckFlags ->
                             (Maybe TypeExtra) ->
                             ( AlterTableOperation,AlterTableOperation)
data Inh_AlterTableOperation = Inh_AlterTableOperation {_cat_Inh_AlterTableOperation :: Catalog,_flags_Inh_AlterTableOperation :: TypeCheckFlags,_imCast_Inh_AlterTableOperation :: (Maybe TypeExtra)}
data Syn_AlterTableOperation = Syn_AlterTableOperation {_annotatedTree_Syn_AlterTableOperation :: AlterTableOperation,_originalTree_Syn_AlterTableOperation :: AlterTableOperation}
_wrap_AlterTableOperation :: T_AlterTableOperation ->
                            Inh_AlterTableOperation ->
                            Syn_AlterTableOperation
_wrap_AlterTableOperation sem (Inh_AlterTableOperation _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_AlterTableOperation _lhsOannotatedTree _lhsOoriginalTree))
_sem_AlterTableOperation_RenameTable :: T_Annotation ->
                                       T_Name ->
                                       T_AlterTableOperation
_sem_AlterTableOperation_RenameTable ann_ newName_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _newNameOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterTableOperation
              _lhsOoriginalTree :: AlterTableOperation
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _newNameOcat :: Catalog
              _newNameOflags :: TypeCheckFlags
              _newNameOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _newNameIannotatedTree :: Name
              _newNameIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 52, column 39)
              _annOtpe =
                  ({-# LINE 52 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 3280 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 53, column 39)
              _newNameOtpe =
                  ({-# LINE 53 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 3286 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   RenameTable _annIannotatedTree _newNameIannotatedTree
                   {-# LINE 3292 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   RenameTable _annIoriginalTree _newNameIoriginalTree
                   {-# LINE 3298 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 3304 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 3310 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 3316 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 3322 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 3328 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _newNameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 3334 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _newNameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 3340 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _newNameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 3346 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _newNameIannotatedTree,_newNameIoriginalTree) =
                  newName_ _newNameOcat _newNameOflags _newNameOimCast _newNameOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterTableOperation_RenameColumn :: T_Annotation ->
                                        NameComponent ->
                                        NameComponent ->
                                        T_AlterTableOperation
_sem_AlterTableOperation_RenameColumn ann_ oldName_ newName_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterTableOperation
              _lhsOoriginalTree :: AlterTableOperation
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 51, column 40)
              _annOtpe =
                  ({-# LINE 51 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 3373 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   RenameColumn _annIannotatedTree oldName_ newName_
                   {-# LINE 3379 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   RenameColumn _annIoriginalTree oldName_ newName_
                   {-# LINE 3385 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 3391 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 3397 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 3403 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 3409 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 3415 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AlterTableOperation_AlterTableActions :: T_Annotation ->
                                             T_AlterTableActionList ->
                                             T_AlterTableOperation
_sem_AlterTableOperation_AlterTableActions ann_ actions_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: AlterTableOperation
              _lhsOoriginalTree :: AlterTableOperation
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _actionsOcat :: Catalog
              _actionsOflags :: TypeCheckFlags
              _actionsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _actionsIannotatedTree :: AlterTableActionList
              _actionsIoriginalTree :: AlterTableActionList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 50, column 45)
              _annOtpe =
                  ({-# LINE 50 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 3444 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterTableActions _annIannotatedTree _actionsIannotatedTree
                   {-# LINE 3450 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterTableActions _annIoriginalTree _actionsIoriginalTree
                   {-# LINE 3456 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 3462 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 3468 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 3474 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 3480 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 3486 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _actionsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 3492 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _actionsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 3498 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _actionsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 3504 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _actionsIannotatedTree,_actionsIoriginalTree) =
                  actions_ _actionsOcat _actionsOflags _actionsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- Annotation --------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
         tpe                  : Either [TypeError] TypeExtra
      synthesized attributes:
         annotatedTree        : Annotation 
         originalTree         : Annotation 
   alternatives:
      alternative Annotation:
         child anSrc          : {Maybe SourcePosition}
         child anType         : {Maybe T.TypeExtra}
         child anErrs         : {[T.TypeError]}
         child anImplicitCast : {Maybe T.TypeExtra}
         child anCatUpd       : {[C.CatalogUpdate]}
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}

-- | Annotation type - one of these is attached to most of the
-- data types used in the ast.
-- the fields in order are:
data Annotation = Annotation {
                             -- | source position for this node
                             anSrc :: ( Maybe SourcePosition)
                             -- | type of the node, 'Nothing' if the tree hasn't been typechecked or if a type error elsewhere prevents determining this node's type
                             ,anType :: ( Maybe T.TypeExtra)
                             -- | any type errors
                             ,anErrs :: ( [T.TypeError])
                             -- | if an implicit cast is needed between this node an its parent, this the target type of cast. If no implicit cast is needed, this is Nothing
                             ,anImplicitCast :: ( Maybe T.TypeExtra)
                             -- | any catalog updates that a statement produces, used only for ddl Statements
                             ,anCatUpd :: ( [C.CatalogUpdate])

    } deriving (Eq,Show,Data,Typeable)

-- cata
_sem_Annotation :: Annotation ->
                  T_Annotation
_sem_Annotation (Annotation _anSrc _anType _anErrs _anImplicitCast _anCatUpd) =
    (_sem_Annotation_Annotation _anSrc _anType _anErrs _anImplicitCast _anCatUpd)
-- semantic domain
type T_Annotation = Catalog ->
                    TypeCheckFlags ->
                    (Maybe TypeExtra) ->
                    (Either [TypeError] TypeExtra) ->
                    ( Annotation,Annotation)
data Inh_Annotation = Inh_Annotation {_cat_Inh_Annotation :: Catalog,_flags_Inh_Annotation :: TypeCheckFlags,_imCast_Inh_Annotation :: (Maybe TypeExtra),_tpe_Inh_Annotation :: (Either [TypeError] TypeExtra)}
data Syn_Annotation = Syn_Annotation {_annotatedTree_Syn_Annotation :: Annotation,_originalTree_Syn_Annotation :: Annotation}
_wrap_Annotation :: T_Annotation ->
                   Inh_Annotation ->
                   Syn_Annotation
_wrap_Annotation sem (Inh_Annotation _lhsIcat _lhsIflags _lhsIimCast _lhsItpe) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast _lhsItpe
     in  (Syn_Annotation _lhsOannotatedTree _lhsOoriginalTree))
_sem_Annotation_Annotation :: (Maybe SourcePosition) ->
                             (Maybe T.TypeExtra) ->
                             ([T.TypeError]) ->
                             (Maybe T.TypeExtra) ->
                             ([C.CatalogUpdate]) ->
                             T_Annotation
_sem_Annotation_Annotation anSrc_ anType_ anErrs_ anImplicitCast_ anCatUpd_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast
       _lhsItpe ->
         (let _lhsOannotatedTree :: Annotation
              _lhsOoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag"(line 140, column 7)
              _lhsOannotatedTree =
                  ({-# LINE 140 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   let t = either (const Nothing) Just _lhsItpe
                       es = either id (const []) _lhsItpe
                   in Annotation anSrc_ t es _lhsIimCast anCatUpd_
                   {-# LINE 3573 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Annotation anSrc_ anType_ anErrs_ anImplicitCast_ anCatUpd_
                   {-# LINE 3579 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Annotation anSrc_ anType_ anErrs_ anImplicitCast_ anCatUpd_
                   {-# LINE 3585 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 3591 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- AttributeDef ------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : AttributeDef 
         originalTree         : AttributeDef 
   alternatives:
      alternative AttributeDef:
         child ann            : Annotation 
         child name           : {NameComponent}
         child typ            : TypeName 
         child def            : MaybeScalarExpr 
         child cons           : RowConstraintList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data AttributeDef = AttributeDef (Annotation) (NameComponent) (TypeName) (MaybeScalarExpr) (RowConstraintList)
                  deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_AttributeDef :: AttributeDef ->
                    T_AttributeDef
_sem_AttributeDef (AttributeDef _ann _name _typ _def _cons) =
    (_sem_AttributeDef_AttributeDef (_sem_Annotation _ann) _name (_sem_TypeName _typ) (_sem_MaybeScalarExpr _def) (_sem_RowConstraintList _cons))
-- semantic domain
type T_AttributeDef = Catalog ->
                      TypeCheckFlags ->
                      (Maybe TypeExtra) ->
                      ( AttributeDef,AttributeDef)
data Inh_AttributeDef = Inh_AttributeDef {_cat_Inh_AttributeDef :: Catalog,_flags_Inh_AttributeDef :: TypeCheckFlags,_imCast_Inh_AttributeDef :: (Maybe TypeExtra)}
data Syn_AttributeDef = Syn_AttributeDef {_annotatedTree_Syn_AttributeDef :: AttributeDef,_originalTree_Syn_AttributeDef :: AttributeDef}
_wrap_AttributeDef :: T_AttributeDef ->
                     Inh_AttributeDef ->
                     Syn_AttributeDef
_wrap_AttributeDef sem (Inh_AttributeDef _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_AttributeDef _lhsOannotatedTree _lhsOoriginalTree))
_sem_AttributeDef_AttributeDef :: T_Annotation ->
                                 NameComponent ->
                                 T_TypeName ->
                                 T_MaybeScalarExpr ->
                                 T_RowConstraintList ->
                                 T_AttributeDef
_sem_AttributeDef_AttributeDef ann_ name_ typ_ def_ cons_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _defOdownEnv :: Environment
              _defOexpectedCast :: Bool
              _defOexpectedType :: (Maybe TypeExtra)
              _defOassignmentCastContext :: Bool
              _lhsOannotatedTree :: AttributeDef
              _lhsOoriginalTree :: AttributeDef
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _typOcat :: Catalog
              _typOflags :: TypeCheckFlags
              _typOimCast :: (Maybe TypeExtra)
              _defOcat :: Catalog
              _defOflags :: TypeCheckFlags
              _defOimCast :: (Maybe TypeExtra)
              _consOcat :: Catalog
              _consOflags :: TypeCheckFlags
              _consOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _typIannotatedTree :: TypeName
              _typInamedType :: (Maybe TypeExtra)
              _typIoriginalTree :: TypeName
              _defIannotatedTree :: MaybeScalarExpr
              _defIoriginalTree :: MaybeScalarExpr
              _defIupType :: (Maybe TypeExtra)
              _consIannotatedTree :: RowConstraintList
              _consIoriginalTree :: RowConstraintList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 54, column 33)
              _annOtpe =
                  ({-# LINE 54 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 3678 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 55, column 33)
              _defOdownEnv =
                  ({-# LINE 55 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 3684 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 56, column 33)
              _defOexpectedCast =
                  ({-# LINE 56 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 3690 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 57, column 33)
              _defOexpectedType =
                  ({-# LINE 57 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 3696 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 807, column 33)
              _defOassignmentCastContext =
                  ({-# LINE 807 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 3702 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AttributeDef _annIannotatedTree name_ _typIannotatedTree _defIannotatedTree _consIannotatedTree
                   {-# LINE 3708 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AttributeDef _annIoriginalTree name_ _typIoriginalTree _defIoriginalTree _consIoriginalTree
                   {-# LINE 3714 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 3720 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 3726 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 3732 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 3738 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 3744 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 3750 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 3756 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 3762 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _defOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 3768 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _defOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 3774 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _defOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 3780 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _consOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 3786 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _consOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 3792 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _consOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 3798 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _typIannotatedTree,_typInamedType,_typIoriginalTree) =
                  typ_ _typOcat _typOflags _typOimCast
              ( _defIannotatedTree,_defIoriginalTree,_defIupType) =
                  def_ _defOassignmentCastContext _defOcat _defOdownEnv _defOexpectedCast _defOexpectedType _defOflags _defOimCast
              ( _consIannotatedTree,_consIoriginalTree) =
                  cons_ _consOcat _consOflags _consOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- AttributeDefList --------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : AttributeDefList 
         originalTree         : AttributeDefList 
   alternatives:
      alternative Cons:
         child hd             : AttributeDef 
         child tl             : AttributeDefList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type AttributeDefList = [AttributeDef]
-- cata
_sem_AttributeDefList :: AttributeDefList ->
                        T_AttributeDefList
_sem_AttributeDefList list =
    (Prelude.foldr _sem_AttributeDefList_Cons _sem_AttributeDefList_Nil (Prelude.map _sem_AttributeDef list))
-- semantic domain
type T_AttributeDefList = Catalog ->
                          TypeCheckFlags ->
                          (Maybe TypeExtra) ->
                          ( AttributeDefList,AttributeDefList)
data Inh_AttributeDefList = Inh_AttributeDefList {_cat_Inh_AttributeDefList :: Catalog,_flags_Inh_AttributeDefList :: TypeCheckFlags,_imCast_Inh_AttributeDefList :: (Maybe TypeExtra)}
data Syn_AttributeDefList = Syn_AttributeDefList {_annotatedTree_Syn_AttributeDefList :: AttributeDefList,_originalTree_Syn_AttributeDefList :: AttributeDefList}
_wrap_AttributeDefList :: T_AttributeDefList ->
                         Inh_AttributeDefList ->
                         Syn_AttributeDefList
_wrap_AttributeDefList sem (Inh_AttributeDefList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_AttributeDefList _lhsOannotatedTree _lhsOoriginalTree))
_sem_AttributeDefList_Cons :: T_AttributeDef ->
                             T_AttributeDefList ->
                             T_AttributeDefList
_sem_AttributeDefList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: AttributeDefList
              _lhsOoriginalTree :: AttributeDefList
              _hdOcat :: Catalog
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: AttributeDef
              _hdIoriginalTree :: AttributeDef
              _tlIannotatedTree :: AttributeDefList
              _tlIoriginalTree :: AttributeDefList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 3873 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 3879 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 3885 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 3891 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 3897 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 3903 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 3909 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 3915 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 3921 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 3927 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree) =
                  hd_ _hdOcat _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_AttributeDefList_Nil :: T_AttributeDefList
_sem_AttributeDefList_Nil =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: AttributeDefList
              _lhsOoriginalTree :: AttributeDefList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 3945 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 3951 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 3957 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 3963 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- CaseScalarExprListScalarExprPair ----------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         downEnv              : Environment
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
         thenExpectedType     : Maybe TypeExtra
         whenExpectedType     : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : CaseScalarExprListScalarExprPair 
         originalTree         : CaseScalarExprListScalarExprPair 
         thenType             : Maybe TypeExtra
         upTypes              : [Maybe TypeExtra]
         whenTypes            : [Maybe TypeExtra]
   alternatives:
      alternative Tuple:
         child x1             : ScalarExprList 
         child x2             : ScalarExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type CaseScalarExprListScalarExprPair = ( ScalarExprList,ScalarExpr)
-- cata
_sem_CaseScalarExprListScalarExprPair :: CaseScalarExprListScalarExprPair ->
                                        T_CaseScalarExprListScalarExprPair
_sem_CaseScalarExprListScalarExprPair ( x1,x2) =
    (_sem_CaseScalarExprListScalarExprPair_Tuple (_sem_ScalarExprList x1) (_sem_ScalarExpr x2))
-- semantic domain
type T_CaseScalarExprListScalarExprPair = Catalog ->
                                          Environment ->
                                          TypeCheckFlags ->
                                          (Maybe TypeExtra) ->
                                          (Maybe TypeExtra) ->
                                          (Maybe TypeExtra) ->
                                          ( CaseScalarExprListScalarExprPair,CaseScalarExprListScalarExprPair,(Maybe TypeExtra),([Maybe TypeExtra]),([Maybe TypeExtra]))
data Inh_CaseScalarExprListScalarExprPair = Inh_CaseScalarExprListScalarExprPair {_cat_Inh_CaseScalarExprListScalarExprPair :: Catalog,_downEnv_Inh_CaseScalarExprListScalarExprPair :: Environment,_flags_Inh_CaseScalarExprListScalarExprPair :: TypeCheckFlags,_imCast_Inh_CaseScalarExprListScalarExprPair :: (Maybe TypeExtra),_thenExpectedType_Inh_CaseScalarExprListScalarExprPair :: (Maybe TypeExtra),_whenExpectedType_Inh_CaseScalarExprListScalarExprPair :: (Maybe TypeExtra)}
data Syn_CaseScalarExprListScalarExprPair = Syn_CaseScalarExprListScalarExprPair {_annotatedTree_Syn_CaseScalarExprListScalarExprPair :: CaseScalarExprListScalarExprPair,_originalTree_Syn_CaseScalarExprListScalarExprPair :: CaseScalarExprListScalarExprPair,_thenType_Syn_CaseScalarExprListScalarExprPair :: (Maybe TypeExtra),_upTypes_Syn_CaseScalarExprListScalarExprPair :: ([Maybe TypeExtra]),_whenTypes_Syn_CaseScalarExprListScalarExprPair :: ([Maybe TypeExtra])}
_wrap_CaseScalarExprListScalarExprPair :: T_CaseScalarExprListScalarExprPair ->
                                         Inh_CaseScalarExprListScalarExprPair ->
                                         Syn_CaseScalarExprListScalarExprPair
_wrap_CaseScalarExprListScalarExprPair sem (Inh_CaseScalarExprListScalarExprPair _lhsIcat _lhsIdownEnv _lhsIflags _lhsIimCast _lhsIthenExpectedType _lhsIwhenExpectedType) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOthenType,_lhsOupTypes,_lhsOwhenTypes) = sem _lhsIcat _lhsIdownEnv _lhsIflags _lhsIimCast _lhsIthenExpectedType _lhsIwhenExpectedType
     in  (Syn_CaseScalarExprListScalarExprPair _lhsOannotatedTree _lhsOoriginalTree _lhsOthenType _lhsOupTypes _lhsOwhenTypes))
_sem_CaseScalarExprListScalarExprPair_Tuple :: T_ScalarExprList ->
                                              T_ScalarExpr ->
                                              T_CaseScalarExprListScalarExprPair
_sem_CaseScalarExprListScalarExprPair_Tuple x1_ x2_ =
    (\ _lhsIcat
       _lhsIdownEnv
       _lhsIflags
       _lhsIimCast
       _lhsIthenExpectedType
       _lhsIwhenExpectedType ->
         (let _x2OodbcFunction :: Bool
              _lhsOwhenTypes :: ([Maybe TypeExtra])
              _lhsOthenType :: (Maybe TypeExtra)
              _x1OexpectedTypes :: ([TypeExtra])
              _x1OexpectedCast :: Bool
              _x2OexpectedType :: (Maybe TypeExtra)
              _x2OexpectedCast :: Bool
              _x1OassignmentCastContext :: Bool
              _x2OassignmentCastContext :: Bool
              _lhsOannotatedTree :: CaseScalarExprListScalarExprPair
              _lhsOoriginalTree :: CaseScalarExprListScalarExprPair
              _lhsOupTypes :: ([Maybe TypeExtra])
              _x1Ocat :: Catalog
              _x1OdownEnv :: Environment
              _x1Oflags :: TypeCheckFlags
              _x1OimCast :: (Maybe TypeExtra)
              _x2Ocat :: Catalog
              _x2OdownEnv :: Environment
              _x2Oflags :: TypeCheckFlags
              _x2OimCast :: (Maybe TypeExtra)
              _x1IannotatedTree :: ScalarExprList
              _x1IoriginalTree :: ScalarExprList
              _x1IupTypes :: ([Maybe TypeExtra])
              _x2IannotatedTree :: ScalarExpr
              _x2IcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _x2IoriginalTree :: ScalarExpr
              _x2IupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 134, column 13)
              _x2OodbcFunction =
                  ({-# LINE 134 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 4053 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 549, column 13)
              _lhsOwhenTypes =
                  ({-# LINE 549 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _x1IupTypes
                   {-# LINE 4059 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 550, column 13)
              _lhsOthenType =
                  ({-# LINE 550 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _x2IupType
                   {-# LINE 4065 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 605, column 11)
              _x1OexpectedTypes =
                  ({-# LINE 605 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe [] repeat _lhsIwhenExpectedType
                   {-# LINE 4071 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 606, column 11)
              _x1OexpectedCast =
                  ({-# LINE 606 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 4077 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 607, column 11)
              _x2OexpectedType =
                  ({-# LINE 607 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIthenExpectedType
                   {-# LINE 4083 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 608, column 11)
              _x2OexpectedCast =
                  ({-# LINE 608 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   True
                   {-# LINE 4089 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 808, column 46)
              _x1OassignmentCastContext =
                  ({-# LINE 808 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 4095 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 809, column 46)
              _x2OassignmentCastContext =
                  ({-# LINE 809 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 4101 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (_x1IannotatedTree,_x2IannotatedTree)
                   {-# LINE 4107 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (_x1IoriginalTree,_x2IoriginalTree)
                   {-# LINE 4113 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 4119 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 4125 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (up)
              _lhsOupTypes =
                  ({-# LINE 554 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _x1IupTypes
                   {-# LINE 4131 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1Ocat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 4137 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1OdownEnv =
                  ({-# LINE 189 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 4143 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1Oflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 4149 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1OimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 4155 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x2Ocat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 4161 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x2OdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 4167 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x2Oflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 4173 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x2OimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 4179 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _x1IannotatedTree,_x1IoriginalTree,_x1IupTypes) =
                  x1_ _x1OassignmentCastContext _x1Ocat _x1OdownEnv _x1OexpectedCast _x1OexpectedTypes _x1Oflags _x1OimCast
              ( _x2IannotatedTree,_x2IcolExprs,_x2IoriginalTree,_x2IupType) =
                  x2_ _x2OassignmentCastContext _x2Ocat _x2OdownEnv _x2OexpectedCast _x2OexpectedType _x2Oflags _x2OimCast _x2OodbcFunction
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOthenType,_lhsOupTypes,_lhsOwhenTypes)))
-- CaseScalarExprListScalarExprPairList ------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         downEnv              : Environment
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
         thenExpectedType     : Maybe TypeExtra
         whenExpectedType     : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : CaseScalarExprListScalarExprPairList 
         originalTree         : CaseScalarExprListScalarExprPairList 
         thenTypes            : [Maybe TypeExtra]
         upTypes              : [Maybe TypeExtra]
         whenTypes            : [[Maybe TypeExtra]]
   alternatives:
      alternative Cons:
         child hd             : CaseScalarExprListScalarExprPair 
         child tl             : CaseScalarExprListScalarExprPairList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type CaseScalarExprListScalarExprPairList = [CaseScalarExprListScalarExprPair]
-- cata
_sem_CaseScalarExprListScalarExprPairList :: CaseScalarExprListScalarExprPairList ->
                                            T_CaseScalarExprListScalarExprPairList
_sem_CaseScalarExprListScalarExprPairList list =
    (Prelude.foldr _sem_CaseScalarExprListScalarExprPairList_Cons _sem_CaseScalarExprListScalarExprPairList_Nil (Prelude.map _sem_CaseScalarExprListScalarExprPair list))
-- semantic domain
type T_CaseScalarExprListScalarExprPairList = Catalog ->
                                              Environment ->
                                              TypeCheckFlags ->
                                              (Maybe TypeExtra) ->
                                              (Maybe TypeExtra) ->
                                              (Maybe TypeExtra) ->
                                              ( CaseScalarExprListScalarExprPairList,CaseScalarExprListScalarExprPairList,([Maybe TypeExtra]),([Maybe TypeExtra]),([[Maybe TypeExtra]]))
data Inh_CaseScalarExprListScalarExprPairList = Inh_CaseScalarExprListScalarExprPairList {_cat_Inh_CaseScalarExprListScalarExprPairList :: Catalog,_downEnv_Inh_CaseScalarExprListScalarExprPairList :: Environment,_flags_Inh_CaseScalarExprListScalarExprPairList :: TypeCheckFlags,_imCast_Inh_CaseScalarExprListScalarExprPairList :: (Maybe TypeExtra),_thenExpectedType_Inh_CaseScalarExprListScalarExprPairList :: (Maybe TypeExtra),_whenExpectedType_Inh_CaseScalarExprListScalarExprPairList :: (Maybe TypeExtra)}
data Syn_CaseScalarExprListScalarExprPairList = Syn_CaseScalarExprListScalarExprPairList {_annotatedTree_Syn_CaseScalarExprListScalarExprPairList :: CaseScalarExprListScalarExprPairList,_originalTree_Syn_CaseScalarExprListScalarExprPairList :: CaseScalarExprListScalarExprPairList,_thenTypes_Syn_CaseScalarExprListScalarExprPairList :: ([Maybe TypeExtra]),_upTypes_Syn_CaseScalarExprListScalarExprPairList :: ([Maybe TypeExtra]),_whenTypes_Syn_CaseScalarExprListScalarExprPairList :: ([[Maybe TypeExtra]])}
_wrap_CaseScalarExprListScalarExprPairList :: T_CaseScalarExprListScalarExprPairList ->
                                             Inh_CaseScalarExprListScalarExprPairList ->
                                             Syn_CaseScalarExprListScalarExprPairList
_wrap_CaseScalarExprListScalarExprPairList sem (Inh_CaseScalarExprListScalarExprPairList _lhsIcat _lhsIdownEnv _lhsIflags _lhsIimCast _lhsIthenExpectedType _lhsIwhenExpectedType) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOthenTypes,_lhsOupTypes,_lhsOwhenTypes) = sem _lhsIcat _lhsIdownEnv _lhsIflags _lhsIimCast _lhsIthenExpectedType _lhsIwhenExpectedType
     in  (Syn_CaseScalarExprListScalarExprPairList _lhsOannotatedTree _lhsOoriginalTree _lhsOthenTypes _lhsOupTypes _lhsOwhenTypes))
_sem_CaseScalarExprListScalarExprPairList_Cons :: T_CaseScalarExprListScalarExprPair ->
                                                 T_CaseScalarExprListScalarExprPairList ->
                                                 T_CaseScalarExprListScalarExprPairList
_sem_CaseScalarExprListScalarExprPairList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIdownEnv
       _lhsIflags
       _lhsIimCast
       _lhsIthenExpectedType
       _lhsIwhenExpectedType ->
         (let _lhsOwhenTypes :: ([[Maybe TypeExtra]])
              _lhsOthenTypes :: ([Maybe TypeExtra])
              _lhsOannotatedTree :: CaseScalarExprListScalarExprPairList
              _lhsOoriginalTree :: CaseScalarExprListScalarExprPairList
              _lhsOupTypes :: ([Maybe TypeExtra])
              _hdOcat :: Catalog
              _hdOdownEnv :: Environment
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _hdOthenExpectedType :: (Maybe TypeExtra)
              _hdOwhenExpectedType :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOdownEnv :: Environment
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _tlOthenExpectedType :: (Maybe TypeExtra)
              _tlOwhenExpectedType :: (Maybe TypeExtra)
              _hdIannotatedTree :: CaseScalarExprListScalarExprPair
              _hdIoriginalTree :: CaseScalarExprListScalarExprPair
              _hdIthenType :: (Maybe TypeExtra)
              _hdIupTypes :: ([Maybe TypeExtra])
              _hdIwhenTypes :: ([Maybe TypeExtra])
              _tlIannotatedTree :: CaseScalarExprListScalarExprPairList
              _tlIoriginalTree :: CaseScalarExprListScalarExprPairList
              _tlIthenTypes :: ([Maybe TypeExtra])
              _tlIupTypes :: ([Maybe TypeExtra])
              _tlIwhenTypes :: ([[Maybe TypeExtra]])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 538, column 10)
              _lhsOwhenTypes =
                  ({-# LINE 538 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _hdIwhenTypes : _tlIwhenTypes
                   {-# LINE 4277 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 539, column 10)
              _lhsOthenTypes =
                  ({-# LINE 539 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _hdIthenType : _tlIthenTypes
                   {-# LINE 4283 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 4289 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 4295 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 4301 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 4307 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (up)
              _lhsOupTypes =
                  ({-# LINE 554 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tlIupTypes
                   {-# LINE 4313 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 4319 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOdownEnv =
                  ({-# LINE 553 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 4325 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 4331 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 4337 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOthenExpectedType =
                  ({-# LINE 601 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIthenExpectedType
                   {-# LINE 4343 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOwhenExpectedType =
                  ({-# LINE 602 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIwhenExpectedType
                   {-# LINE 4349 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 4355 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOdownEnv =
                  ({-# LINE 553 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 4361 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 4367 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 4373 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOthenExpectedType =
                  ({-# LINE 601 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIthenExpectedType
                   {-# LINE 4379 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOwhenExpectedType =
                  ({-# LINE 602 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIwhenExpectedType
                   {-# LINE 4385 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree,_hdIthenType,_hdIupTypes,_hdIwhenTypes) =
                  hd_ _hdOcat _hdOdownEnv _hdOflags _hdOimCast _hdOthenExpectedType _hdOwhenExpectedType
              ( _tlIannotatedTree,_tlIoriginalTree,_tlIthenTypes,_tlIupTypes,_tlIwhenTypes) =
                  tl_ _tlOcat _tlOdownEnv _tlOflags _tlOimCast _tlOthenExpectedType _tlOwhenExpectedType
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOthenTypes,_lhsOupTypes,_lhsOwhenTypes)))
_sem_CaseScalarExprListScalarExprPairList_Nil :: T_CaseScalarExprListScalarExprPairList
_sem_CaseScalarExprListScalarExprPairList_Nil =
    (\ _lhsIcat
       _lhsIdownEnv
       _lhsIflags
       _lhsIimCast
       _lhsIthenExpectedType
       _lhsIwhenExpectedType ->
         (let _lhsOwhenTypes :: ([[Maybe TypeExtra]])
              _lhsOthenTypes :: ([Maybe TypeExtra])
              _lhsOupTypes :: ([Maybe TypeExtra])
              _lhsOannotatedTree :: CaseScalarExprListScalarExprPairList
              _lhsOoriginalTree :: CaseScalarExprListScalarExprPairList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 540, column 9)
              _lhsOwhenTypes =
                  ({-# LINE 540 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   []
                   {-# LINE 4409 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 541, column 9)
              _lhsOthenTypes =
                  ({-# LINE 541 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   []
                   {-# LINE 4415 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 542, column 9)
              _lhsOupTypes =
                  ({-# LINE 542 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   []
                   {-# LINE 4421 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 4427 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 4433 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 4439 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 4445 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOthenTypes,_lhsOupTypes,_lhsOwhenTypes)))
-- Constraint --------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : Constraint 
         originalTree         : Constraint 
   alternatives:
      alternative UniqueConstraint:
         child ann            : Annotation 
         child name           : {String}
         child x              : {[NameComponent]}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative PrimaryKeyConstraint:
         child ann            : Annotation 
         child name           : {String}
         child x              : {[NameComponent]}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CheckConstraint:
         child ann            : Annotation 
         child name           : {String}
         child expr           : ScalarExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative ReferenceConstraint:
         child ann            : Annotation 
         child name           : {String}
         child atts           : {[NameComponent]}
         child table          : Name 
         child tableAtts      : {[NameComponent]}
         child onUpdate       : {Cascade}
         child onDelete       : {Cascade}
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data Constraint = UniqueConstraint (Annotation) (String) (([NameComponent]))
                | PrimaryKeyConstraint (Annotation) (String) (([NameComponent]))
                | CheckConstraint (Annotation) (String) (ScalarExpr)
                | ReferenceConstraint (Annotation) (String) (([NameComponent])) (Name) (([NameComponent])) (Cascade) (Cascade)
                deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_Constraint :: Constraint ->
                  T_Constraint
_sem_Constraint (UniqueConstraint _ann _name _x) =
    (_sem_Constraint_UniqueConstraint (_sem_Annotation _ann) _name _x)
_sem_Constraint (PrimaryKeyConstraint _ann _name _x) =
    (_sem_Constraint_PrimaryKeyConstraint (_sem_Annotation _ann) _name _x)
_sem_Constraint (CheckConstraint _ann _name _expr) =
    (_sem_Constraint_CheckConstraint (_sem_Annotation _ann) _name (_sem_ScalarExpr _expr))
_sem_Constraint (ReferenceConstraint _ann _name _atts _table _tableAtts _onUpdate _onDelete) =
    (_sem_Constraint_ReferenceConstraint (_sem_Annotation _ann) _name _atts (_sem_Name _table) _tableAtts _onUpdate _onDelete)
-- semantic domain
type T_Constraint = Catalog ->
                    TypeCheckFlags ->
                    (Maybe TypeExtra) ->
                    ( Constraint,Constraint)
data Inh_Constraint = Inh_Constraint {_cat_Inh_Constraint :: Catalog,_flags_Inh_Constraint :: TypeCheckFlags,_imCast_Inh_Constraint :: (Maybe TypeExtra)}
data Syn_Constraint = Syn_Constraint {_annotatedTree_Syn_Constraint :: Constraint,_originalTree_Syn_Constraint :: Constraint}
_wrap_Constraint :: T_Constraint ->
                   Inh_Constraint ->
                   Syn_Constraint
_wrap_Constraint sem (Inh_Constraint _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_Constraint _lhsOannotatedTree _lhsOoriginalTree))
_sem_Constraint_UniqueConstraint :: T_Annotation ->
                                   String ->
                                   ([NameComponent]) ->
                                   T_Constraint
_sem_Constraint_UniqueConstraint ann_ name_ x_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Constraint
              _lhsOoriginalTree :: Constraint
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 65, column 35)
              _annOtpe =
                  ({-# LINE 65 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 4541 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   UniqueConstraint _annIannotatedTree name_ x_
                   {-# LINE 4547 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   UniqueConstraint _annIoriginalTree name_ x_
                   {-# LINE 4553 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 4559 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 4565 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 4571 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 4577 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 4583 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Constraint_PrimaryKeyConstraint :: T_Annotation ->
                                       String ->
                                       ([NameComponent]) ->
                                       T_Constraint
_sem_Constraint_PrimaryKeyConstraint ann_ name_ x_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Constraint
              _lhsOoriginalTree :: Constraint
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 62, column 39)
              _annOtpe =
                  ({-# LINE 62 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 4608 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   PrimaryKeyConstraint _annIannotatedTree name_ x_
                   {-# LINE 4614 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   PrimaryKeyConstraint _annIoriginalTree name_ x_
                   {-# LINE 4620 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 4626 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 4632 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 4638 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 4644 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 4650 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Constraint_CheckConstraint :: T_Annotation ->
                                  String ->
                                  T_ScalarExpr ->
                                  T_Constraint
_sem_Constraint_CheckConstraint ann_ name_ expr_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _exprOdownEnv :: Environment
              _exprOexpectedCast :: Bool
              _exprOexpectedType :: (Maybe TypeExtra)
              _exprOodbcFunction :: Bool
              _exprOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Constraint
              _lhsOoriginalTree :: Constraint
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _exprOcat :: Catalog
              _exprOflags :: TypeCheckFlags
              _exprOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exprIannotatedTree :: ScalarExpr
              _exprIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exprIoriginalTree :: ScalarExpr
              _exprIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 58, column 34)
              _annOtpe =
                  ({-# LINE 58 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 4687 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 59, column 34)
              _exprOdownEnv =
                  ({-# LINE 59 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 4693 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 60, column 34)
              _exprOexpectedCast =
                  ({-# LINE 60 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 4699 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 61, column 34)
              _exprOexpectedType =
                  ({-# LINE 61 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 4705 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 137, column 23)
              _exprOodbcFunction =
                  ({-# LINE 137 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 4711 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 810, column 34)
              _exprOassignmentCastContext =
                  ({-# LINE 810 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 4717 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CheckConstraint _annIannotatedTree name_ _exprIannotatedTree
                   {-# LINE 4723 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CheckConstraint _annIoriginalTree name_ _exprIoriginalTree
                   {-# LINE 4729 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 4735 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 4741 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 4747 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 4753 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 4759 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 4765 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 4771 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 4777 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exprIannotatedTree,_exprIcolExprs,_exprIoriginalTree,_exprIupType) =
                  expr_ _exprOassignmentCastContext _exprOcat _exprOdownEnv _exprOexpectedCast _exprOexpectedType _exprOflags _exprOimCast _exprOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Constraint_ReferenceConstraint :: T_Annotation ->
                                      String ->
                                      ([NameComponent]) ->
                                      T_Name ->
                                      ([NameComponent]) ->
                                      Cascade ->
                                      Cascade ->
                                      T_Constraint
_sem_Constraint_ReferenceConstraint ann_ name_ atts_ table_ tableAtts_ onUpdate_ onDelete_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _tableOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Constraint
              _lhsOoriginalTree :: Constraint
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _tableOcat :: Catalog
              _tableOflags :: TypeCheckFlags
              _tableOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _tableIannotatedTree :: Name
              _tableIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 63, column 38)
              _annOtpe =
                  ({-# LINE 63 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 4814 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 64, column 38)
              _tableOtpe =
                  ({-# LINE 64 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 4820 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ReferenceConstraint _annIannotatedTree name_ atts_ _tableIannotatedTree tableAtts_ onUpdate_ onDelete_
                   {-# LINE 4826 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ReferenceConstraint _annIoriginalTree name_ atts_ _tableIoriginalTree tableAtts_ onUpdate_ onDelete_
                   {-# LINE 4832 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 4838 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 4844 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 4850 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 4856 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 4862 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 4868 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 4874 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 4880 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _tableIannotatedTree,_tableIoriginalTree) =
                  table_ _tableOcat _tableOflags _tableOimCast _tableOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- ConstraintList ----------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : ConstraintList 
         originalTree         : ConstraintList 
   alternatives:
      alternative Cons:
         child hd             : Constraint 
         child tl             : ConstraintList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type ConstraintList = [Constraint]
-- cata
_sem_ConstraintList :: ConstraintList ->
                      T_ConstraintList
_sem_ConstraintList list =
    (Prelude.foldr _sem_ConstraintList_Cons _sem_ConstraintList_Nil (Prelude.map _sem_Constraint list))
-- semantic domain
type T_ConstraintList = Catalog ->
                        TypeCheckFlags ->
                        (Maybe TypeExtra) ->
                        ( ConstraintList,ConstraintList)
data Inh_ConstraintList = Inh_ConstraintList {_cat_Inh_ConstraintList :: Catalog,_flags_Inh_ConstraintList :: TypeCheckFlags,_imCast_Inh_ConstraintList :: (Maybe TypeExtra)}
data Syn_ConstraintList = Syn_ConstraintList {_annotatedTree_Syn_ConstraintList :: ConstraintList,_originalTree_Syn_ConstraintList :: ConstraintList}
_wrap_ConstraintList :: T_ConstraintList ->
                       Inh_ConstraintList ->
                       Syn_ConstraintList
_wrap_ConstraintList sem (Inh_ConstraintList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_ConstraintList _lhsOannotatedTree _lhsOoriginalTree))
_sem_ConstraintList_Cons :: T_Constraint ->
                           T_ConstraintList ->
                           T_ConstraintList
_sem_ConstraintList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: ConstraintList
              _lhsOoriginalTree :: ConstraintList
              _hdOcat :: Catalog
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: Constraint
              _hdIoriginalTree :: Constraint
              _tlIannotatedTree :: ConstraintList
              _tlIoriginalTree :: ConstraintList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 4951 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 4957 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 4963 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 4969 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 4975 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 4981 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 4987 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 4993 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 4999 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 5005 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree) =
                  hd_ _hdOcat _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_ConstraintList_Nil :: T_ConstraintList
_sem_ConstraintList_Nil =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: ConstraintList
              _lhsOoriginalTree :: ConstraintList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 5023 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 5029 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 5035 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 5041 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- FnBody ------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : FnBody 
         originalTree         : FnBody 
   alternatives:
      alternative SqlFnBody:
         child ann            : Annotation 
         child sts            : StatementList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative PlpgsqlFnBody:
         child ann            : Annotation 
         child blk            : Statement 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data FnBody = SqlFnBody (Annotation) (StatementList)
            | PlpgsqlFnBody (Annotation) (Statement)
            deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_FnBody :: FnBody ->
              T_FnBody
_sem_FnBody (SqlFnBody _ann _sts) =
    (_sem_FnBody_SqlFnBody (_sem_Annotation _ann) (_sem_StatementList _sts))
_sem_FnBody (PlpgsqlFnBody _ann _blk) =
    (_sem_FnBody_PlpgsqlFnBody (_sem_Annotation _ann) (_sem_Statement _blk))
-- semantic domain
type T_FnBody = Catalog ->
                TypeCheckFlags ->
                (Maybe TypeExtra) ->
                ( FnBody,FnBody)
data Inh_FnBody = Inh_FnBody {_cat_Inh_FnBody :: Catalog,_flags_Inh_FnBody :: TypeCheckFlags,_imCast_Inh_FnBody :: (Maybe TypeExtra)}
data Syn_FnBody = Syn_FnBody {_annotatedTree_Syn_FnBody :: FnBody,_originalTree_Syn_FnBody :: FnBody}
_wrap_FnBody :: T_FnBody ->
               Inh_FnBody ->
               Syn_FnBody
_wrap_FnBody sem (Inh_FnBody _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_FnBody _lhsOannotatedTree _lhsOoriginalTree))
_sem_FnBody_SqlFnBody :: T_Annotation ->
                        T_StatementList ->
                        T_FnBody
_sem_FnBody_SqlFnBody ann_ sts_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: FnBody
              _lhsOoriginalTree :: FnBody
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _stsOcat :: Catalog
              _stsOflags :: TypeCheckFlags
              _stsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _stsIannotatedTree :: StatementList
              _stsIoriginalTree :: StatementList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 67, column 24)
              _annOtpe =
                  ({-# LINE 67 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 5115 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SqlFnBody _annIannotatedTree _stsIannotatedTree
                   {-# LINE 5121 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SqlFnBody _annIoriginalTree _stsIoriginalTree
                   {-# LINE 5127 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 5133 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 5139 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 5145 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 5151 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 5157 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 5163 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 5169 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 5175 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _stsIannotatedTree,_stsIoriginalTree) =
                  sts_ _stsOcat _stsOflags _stsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_FnBody_PlpgsqlFnBody :: T_Annotation ->
                            T_Statement ->
                            T_FnBody
_sem_FnBody_PlpgsqlFnBody ann_ blk_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: FnBody
              _lhsOoriginalTree :: FnBody
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _blkOcat :: Catalog
              _blkOflags :: TypeCheckFlags
              _blkOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _blkIannotatedTree :: Statement
              _blkIoriginalTree :: Statement
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 66, column 28)
              _annOtpe =
                  ({-# LINE 66 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 5206 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   PlpgsqlFnBody _annIannotatedTree _blkIannotatedTree
                   {-# LINE 5212 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   PlpgsqlFnBody _annIoriginalTree _blkIoriginalTree
                   {-# LINE 5218 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 5224 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 5230 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 5236 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 5242 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 5248 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _blkOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 5254 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _blkOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 5260 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _blkOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 5266 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _blkIannotatedTree,_blkIoriginalTree) =
                  blk_ _blkOcat _blkOflags _blkOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- InList ------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         downEnv              : Environment
         expectedCast         : Bool
         expectedType         : Maybe TypeExtra
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : InList 
         listType             : Either [TypeError] TypeExtra
         originalTree         : InList 
   alternatives:
      alternative InList:
         child ann            : Annotation 
         child exprs          : ScalarExprList 
         visit 0:
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative InQueryExpr:
         child ann            : Annotation 
         child sel            : QueryExpr 
         visit 0:
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
-}
data InList = InList (Annotation) (ScalarExprList)
            | InQueryExpr (Annotation) (QueryExpr)
            deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_InList :: InList ->
              T_InList
_sem_InList (InList _ann _exprs) =
    (_sem_InList_InList (_sem_Annotation _ann) (_sem_ScalarExprList _exprs))
_sem_InList (InQueryExpr _ann _sel) =
    (_sem_InList_InQueryExpr (_sem_Annotation _ann) (_sem_QueryExpr _sel))
-- semantic domain
type T_InList = Catalog ->
                Environment ->
                Bool ->
                (Maybe TypeExtra) ->
                TypeCheckFlags ->
                (Maybe TypeExtra) ->
                ( InList,(Either [TypeError] TypeExtra),InList)
data Inh_InList = Inh_InList {_cat_Inh_InList :: Catalog,_downEnv_Inh_InList :: Environment,_expectedCast_Inh_InList :: Bool,_expectedType_Inh_InList :: (Maybe TypeExtra),_flags_Inh_InList :: TypeCheckFlags,_imCast_Inh_InList :: (Maybe TypeExtra)}
data Syn_InList = Syn_InList {_annotatedTree_Syn_InList :: InList,_listType_Syn_InList :: (Either [TypeError] TypeExtra),_originalTree_Syn_InList :: InList}
_wrap_InList :: T_InList ->
               Inh_InList ->
               Syn_InList
_wrap_InList sem (Inh_InList _lhsIcat _lhsIdownEnv _lhsIexpectedCast _lhsIexpectedType _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOlistType,_lhsOoriginalTree) = sem _lhsIcat _lhsIdownEnv _lhsIexpectedCast _lhsIexpectedType _lhsIflags _lhsIimCast
     in  (Syn_InList _lhsOannotatedTree _lhsOlistType _lhsOoriginalTree))
_sem_InList_InList :: T_Annotation ->
                     T_ScalarExprList ->
                     T_InList
_sem_InList_InList ann_ exprs_ =
    (\ _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOlistType :: (Either [TypeError] TypeExtra)
              _exprsOexpectedTypes :: ([TypeExtra])
              _exprsOexpectedCast :: Bool
              _annOimCast :: (Maybe TypeExtra)
              _exprsOassignmentCastContext :: Bool
              _lhsOannotatedTree :: InList
              _lhsOoriginalTree :: InList
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOtpe :: (Either [TypeError] TypeExtra)
              _exprsOcat :: Catalog
              _exprsOdownEnv :: Environment
              _exprsOflags :: TypeCheckFlags
              _exprsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exprsIannotatedTree :: ScalarExprList
              _exprsIoriginalTree :: ScalarExprList
              _exprsIupTypes :: ([Maybe TypeExtra])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 219, column 9)
              _tpe =
                  ({-# LINE 219 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   Left []
                   {-# LINE 5362 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 681, column 9)
              _lhsOlistType =
                  ({-# LINE 681 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   mapM (maybe (Left []) Right) _exprsIupTypes
                   >>= resolveResultSetTypeExtra _lhsIcat
                   {-# LINE 5369 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 683, column 9)
              _exprsOexpectedTypes =
                  ({-# LINE 683 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe [] repeat _lhsIexpectedType
                   {-# LINE 5375 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 685, column 9)
              _exprsOexpectedCast =
                  ({-# LINE 685 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 5381 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 781, column 12)
              _annOimCast =
                  ({-# LINE 781 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Nothing
                   {-# LINE 5387 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 811, column 21)
              _exprsOassignmentCastContext =
                  ({-# LINE 811 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 5393 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   InList _annIannotatedTree _exprsIannotatedTree
                   {-# LINE 5399 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   InList _annIoriginalTree _exprsIoriginalTree
                   {-# LINE 5405 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 5411 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 5417 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 5423 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 5429 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (from local)
              _annOtpe =
                  ({-# LINE 126 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _tpe
                   {-# LINE 5435 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 5441 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprsOdownEnv =
                  ({-# LINE 189 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 5447 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 5453 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 5459 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exprsIannotatedTree,_exprsIoriginalTree,_exprsIupTypes) =
                  exprs_ _exprsOassignmentCastContext _exprsOcat _exprsOdownEnv _exprsOexpectedCast _exprsOexpectedTypes _exprsOflags _exprsOimCast
          in  ( _lhsOannotatedTree,_lhsOlistType,_lhsOoriginalTree)))
_sem_InList_InQueryExpr :: T_Annotation ->
                          T_QueryExpr ->
                          T_InList
_sem_InList_InQueryExpr ann_ sel_ =
    (\ _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast ->
         (let _selOouterDownEnv :: (Maybe Environment)
              _lhsOlistType :: (Either [TypeError] TypeExtra)
              _selOexpectedType :: (Maybe [TypeExtra])
              _annOimCast :: (Maybe TypeExtra)
              _selOassignmentCastContext :: Bool
              _lhsOannotatedTree :: InList
              _lhsOoriginalTree :: InList
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOtpe :: (Either [TypeError] TypeExtra)
              _selOcat :: Catalog
              _selOflags :: TypeCheckFlags
              _selOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _selIannotatedTree :: QueryExpr
              _selIoriginalTree :: QueryExpr
              _selIupType :: (Maybe [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 97, column 17)
              _selOouterDownEnv =
                  ({-# LINE 97 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   Nothing
                   {-# LINE 5498 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 219, column 9)
              _tpe =
                  ({-# LINE 219 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   Left []
                   {-# LINE 5504 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 688, column 9)
              _lhsOlistType =
                  ({-# LINE 688 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   do
                   st <- maybe (Left []) Right (map snd <$> _selIupType)
                   case length st of
                             0 -> Left [InternalError
                                        "got subquery with no columns? in inselect"]
                             1 -> Right $ head st
                             _ -> Right $ mkTypeExtra $ AnonymousCompositeType
                                     $ map teType st
                   {-# LINE 5517 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 698, column 9)
              _selOexpectedType =
                  ({-# LINE 698 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   liftM (map snd) _selIupType
                   {-# LINE 5523 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 782, column 17)
              _annOimCast =
                  ({-# LINE 782 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Nothing
                   {-# LINE 5529 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 812, column 26)
              _selOassignmentCastContext =
                  ({-# LINE 812 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 5535 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   InQueryExpr _annIannotatedTree _selIannotatedTree
                   {-# LINE 5541 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   InQueryExpr _annIoriginalTree _selIoriginalTree
                   {-# LINE 5547 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 5553 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 5559 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 5565 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 5571 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (from local)
              _annOtpe =
                  ({-# LINE 126 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _tpe
                   {-# LINE 5577 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 5583 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 5589 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 5595 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _selIannotatedTree,_selIoriginalTree,_selIupType) =
                  sel_ _selOassignmentCastContext _selOcat _selOexpectedType _selOflags _selOimCast _selOouterDownEnv
          in  ( _lhsOannotatedTree,_lhsOlistType,_lhsOoriginalTree)))
-- JoinExpr ----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         downEnv              : Environment
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : JoinExpr 
         originalTree         : JoinExpr 
   alternatives:
      alternative JoinOn:
         child ann            : Annotation 
         child expr           : ScalarExpr 
         visit 0:
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative JoinUsing:
         child ann            : Annotation 
         child x              : {[NameComponent]}
         visit 0:
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
-}
data JoinExpr = JoinOn (Annotation) (ScalarExpr)
              | JoinUsing (Annotation) (([NameComponent]))
              deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_JoinExpr :: JoinExpr ->
                T_JoinExpr
_sem_JoinExpr (JoinOn _ann _expr) =
    (_sem_JoinExpr_JoinOn (_sem_Annotation _ann) (_sem_ScalarExpr _expr))
_sem_JoinExpr (JoinUsing _ann _x) =
    (_sem_JoinExpr_JoinUsing (_sem_Annotation _ann) _x)
-- semantic domain
type T_JoinExpr = Catalog ->
                  Environment ->
                  TypeCheckFlags ->
                  (Maybe TypeExtra) ->
                  ( JoinExpr,JoinExpr)
data Inh_JoinExpr = Inh_JoinExpr {_cat_Inh_JoinExpr :: Catalog,_downEnv_Inh_JoinExpr :: Environment,_flags_Inh_JoinExpr :: TypeCheckFlags,_imCast_Inh_JoinExpr :: (Maybe TypeExtra)}
data Syn_JoinExpr = Syn_JoinExpr {_annotatedTree_Syn_JoinExpr :: JoinExpr,_originalTree_Syn_JoinExpr :: JoinExpr}
_wrap_JoinExpr :: T_JoinExpr ->
                 Inh_JoinExpr ->
                 Syn_JoinExpr
_wrap_JoinExpr sem (Inh_JoinExpr _lhsIcat _lhsIdownEnv _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIdownEnv _lhsIflags _lhsIimCast
     in  (Syn_JoinExpr _lhsOannotatedTree _lhsOoriginalTree))
_sem_JoinExpr_JoinOn :: T_Annotation ->
                       T_ScalarExpr ->
                       T_JoinExpr
_sem_JoinExpr_JoinOn ann_ expr_ =
    (\ _lhsIcat
       _lhsIdownEnv
       _lhsIflags
       _lhsIimCast ->
         (let _exprOodbcFunction :: Bool
              _exprOexpectedType :: (Maybe TypeExtra)
              _exprOexpectedCast :: Bool
              _exprOassignmentCastContext :: Bool
              _lhsOannotatedTree :: JoinExpr
              _lhsOoriginalTree :: JoinExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _exprOcat :: Catalog
              _exprOdownEnv :: Environment
              _exprOflags :: TypeCheckFlags
              _exprOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exprIannotatedTree :: ScalarExpr
              _exprIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exprIoriginalTree :: ScalarExpr
              _exprIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 223, column 9)
              _tpe =
                  ({-# LINE 223 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   Left []
                   {-# LINE 5685 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 140, column 14)
              _exprOodbcFunction =
                  ({-# LINE 140 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 5691 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 745, column 7)
              _exprOexpectedType =
                  ({-# LINE 745 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   do
                   bt <- ansiTypeNameToDialect (tcfDialect _lhsIflags) "boolean"
                   Just $ TypeExtra (ScalarType bt) Nothing Nothing
                        $ maybe False teNullable _exprIupType
                   {-# LINE 5700 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 749, column 7)
              _exprOexpectedCast =
                  ({-# LINE 749 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 5706 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 813, column 23)
              _exprOassignmentCastContext =
                  ({-# LINE 813 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 5712 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   JoinOn _annIannotatedTree _exprIannotatedTree
                   {-# LINE 5718 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   JoinOn _annIoriginalTree _exprIoriginalTree
                   {-# LINE 5724 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 5730 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 5736 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 5742 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 5748 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 5754 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (from local)
              _annOtpe =
                  ({-# LINE 126 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _tpe
                   {-# LINE 5760 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 5766 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 5772 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 5778 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 5784 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exprIannotatedTree,_exprIcolExprs,_exprIoriginalTree,_exprIupType) =
                  expr_ _exprOassignmentCastContext _exprOcat _exprOdownEnv _exprOexpectedCast _exprOexpectedType _exprOflags _exprOimCast _exprOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_JoinExpr_JoinUsing :: T_Annotation ->
                          ([NameComponent]) ->
                          T_JoinExpr
_sem_JoinExpr_JoinUsing ann_ x_ =
    (\ _lhsIcat
       _lhsIdownEnv
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: JoinExpr
              _lhsOoriginalTree :: JoinExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 223, column 9)
              _tpe =
                  ({-# LINE 223 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   Left []
                   {-# LINE 5811 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   JoinUsing _annIannotatedTree x_
                   {-# LINE 5817 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   JoinUsing _annIoriginalTree x_
                   {-# LINE 5823 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 5829 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 5835 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 5841 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 5847 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 5853 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (from local)
              _annOtpe =
                  ({-# LINE 126 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _tpe
                   {-# LINE 5859 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- MaybeBoolExpr -----------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         downEnv              : Environment
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : MaybeBoolExpr 
         originalTree         : MaybeBoolExpr 
   alternatives:
      alternative Just:
         child just           : ScalarExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nothing:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type MaybeBoolExpr = Maybe (ScalarExpr)
-- cata
_sem_MaybeBoolExpr :: MaybeBoolExpr ->
                     T_MaybeBoolExpr
_sem_MaybeBoolExpr (Prelude.Just x) =
    (_sem_MaybeBoolExpr_Just (_sem_ScalarExpr x))
_sem_MaybeBoolExpr Prelude.Nothing =
    _sem_MaybeBoolExpr_Nothing
-- semantic domain
type T_MaybeBoolExpr = Catalog ->
                       Environment ->
                       TypeCheckFlags ->
                       (Maybe TypeExtra) ->
                       ( MaybeBoolExpr,MaybeBoolExpr)
data Inh_MaybeBoolExpr = Inh_MaybeBoolExpr {_cat_Inh_MaybeBoolExpr :: Catalog,_downEnv_Inh_MaybeBoolExpr :: Environment,_flags_Inh_MaybeBoolExpr :: TypeCheckFlags,_imCast_Inh_MaybeBoolExpr :: (Maybe TypeExtra)}
data Syn_MaybeBoolExpr = Syn_MaybeBoolExpr {_annotatedTree_Syn_MaybeBoolExpr :: MaybeBoolExpr,_originalTree_Syn_MaybeBoolExpr :: MaybeBoolExpr}
_wrap_MaybeBoolExpr :: T_MaybeBoolExpr ->
                      Inh_MaybeBoolExpr ->
                      Syn_MaybeBoolExpr
_wrap_MaybeBoolExpr sem (Inh_MaybeBoolExpr _lhsIcat _lhsIdownEnv _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIdownEnv _lhsIflags _lhsIimCast
     in  (Syn_MaybeBoolExpr _lhsOannotatedTree _lhsOoriginalTree))
_sem_MaybeBoolExpr_Just :: T_ScalarExpr ->
                          T_MaybeBoolExpr
_sem_MaybeBoolExpr_Just just_ =
    (\ _lhsIcat
       _lhsIdownEnv
       _lhsIflags
       _lhsIimCast ->
         (let _justOodbcFunction :: Bool
              _justOexpectedType :: (Maybe TypeExtra)
              _justOexpectedCast :: Bool
              _justOassignmentCastContext :: Bool
              _lhsOannotatedTree :: MaybeBoolExpr
              _lhsOoriginalTree :: MaybeBoolExpr
              _justOcat :: Catalog
              _justOdownEnv :: Environment
              _justOflags :: TypeCheckFlags
              _justOimCast :: (Maybe TypeExtra)
              _justIannotatedTree :: ScalarExpr
              _justIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _justIoriginalTree :: ScalarExpr
              _justIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 143, column 12)
              _justOodbcFunction =
                  ({-# LINE 143 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 5933 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 761, column 7)
              _justOexpectedType =
                  ({-# LINE 761 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Nothing
                   {-# LINE 5939 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 762, column 7)
              _justOexpectedCast =
                  ({-# LINE 762 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 5945 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 814, column 26)
              _justOassignmentCastContext =
                  ({-# LINE 814 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 5951 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Just _justIannotatedTree
                   {-# LINE 5957 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Just _justIoriginalTree
                   {-# LINE 5963 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 5969 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 5975 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 5981 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 5987 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 5993 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 5999 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _justIannotatedTree,_justIcolExprs,_justIoriginalTree,_justIupType) =
                  just_ _justOassignmentCastContext _justOcat _justOdownEnv _justOexpectedCast _justOexpectedType _justOflags _justOimCast _justOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_MaybeBoolExpr_Nothing :: T_MaybeBoolExpr
_sem_MaybeBoolExpr_Nothing =
    (\ _lhsIcat
       _lhsIdownEnv
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: MaybeBoolExpr
              _lhsOoriginalTree :: MaybeBoolExpr
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Nothing
                   {-# LINE 6016 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Nothing
                   {-# LINE 6022 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 6028 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 6034 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- MaybeNameComponentList --------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : MaybeNameComponentList 
         originalTree         : MaybeNameComponentList 
   alternatives:
      alternative Just:
         child just           : NameComponentList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nothing:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type MaybeNameComponentList = Maybe (NameComponentList)
-- cata
_sem_MaybeNameComponentList :: MaybeNameComponentList ->
                              T_MaybeNameComponentList
_sem_MaybeNameComponentList (Prelude.Just x) =
    (_sem_MaybeNameComponentList_Just (_sem_NameComponentList x))
_sem_MaybeNameComponentList Prelude.Nothing =
    _sem_MaybeNameComponentList_Nothing
-- semantic domain
type T_MaybeNameComponentList = Catalog ->
                                TypeCheckFlags ->
                                (Maybe TypeExtra) ->
                                ( MaybeNameComponentList,MaybeNameComponentList)
data Inh_MaybeNameComponentList = Inh_MaybeNameComponentList {_cat_Inh_MaybeNameComponentList :: Catalog,_flags_Inh_MaybeNameComponentList :: TypeCheckFlags,_imCast_Inh_MaybeNameComponentList :: (Maybe TypeExtra)}
data Syn_MaybeNameComponentList = Syn_MaybeNameComponentList {_annotatedTree_Syn_MaybeNameComponentList :: MaybeNameComponentList,_originalTree_Syn_MaybeNameComponentList :: MaybeNameComponentList}
_wrap_MaybeNameComponentList :: T_MaybeNameComponentList ->
                               Inh_MaybeNameComponentList ->
                               Syn_MaybeNameComponentList
_wrap_MaybeNameComponentList sem (Inh_MaybeNameComponentList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_MaybeNameComponentList _lhsOannotatedTree _lhsOoriginalTree))
_sem_MaybeNameComponentList_Just :: T_NameComponentList ->
                                   T_MaybeNameComponentList
_sem_MaybeNameComponentList_Just just_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: MaybeNameComponentList
              _lhsOoriginalTree :: MaybeNameComponentList
              _justOcat :: Catalog
              _justOflags :: TypeCheckFlags
              _justOimCast :: (Maybe TypeExtra)
              _justIannotatedTree :: NameComponentList
              _justIoriginalTree :: NameComponentList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Just _justIannotatedTree
                   {-# LINE 6096 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Just _justIoriginalTree
                   {-# LINE 6102 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 6108 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 6114 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 6120 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 6126 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 6132 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _justIannotatedTree,_justIoriginalTree) =
                  just_ _justOcat _justOflags _justOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_MaybeNameComponentList_Nothing :: T_MaybeNameComponentList
_sem_MaybeNameComponentList_Nothing =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: MaybeNameComponentList
              _lhsOoriginalTree :: MaybeNameComponentList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Nothing
                   {-# LINE 6148 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Nothing
                   {-# LINE 6154 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 6160 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 6166 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- MaybeScalarExpr ---------------------------------------------
{-
   visit 0:
      inherited attributes:
         assignmentCastContext : Bool
         cat                  : Catalog
         downEnv              : Environment
         expectedCast         : Bool
         expectedType         : Maybe TypeExtra
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : MaybeScalarExpr 
         originalTree         : MaybeScalarExpr 
         upType               : Maybe TypeExtra
   alternatives:
      alternative Just:
         child just           : ScalarExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nothing:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type MaybeScalarExpr = Maybe (ScalarExpr)
-- cata
_sem_MaybeScalarExpr :: MaybeScalarExpr ->
                       T_MaybeScalarExpr
_sem_MaybeScalarExpr (Prelude.Just x) =
    (_sem_MaybeScalarExpr_Just (_sem_ScalarExpr x))
_sem_MaybeScalarExpr Prelude.Nothing =
    _sem_MaybeScalarExpr_Nothing
-- semantic domain
type T_MaybeScalarExpr = Bool ->
                         Catalog ->
                         Environment ->
                         Bool ->
                         (Maybe TypeExtra) ->
                         TypeCheckFlags ->
                         (Maybe TypeExtra) ->
                         ( MaybeScalarExpr,MaybeScalarExpr,(Maybe TypeExtra))
data Inh_MaybeScalarExpr = Inh_MaybeScalarExpr {_assignmentCastContext_Inh_MaybeScalarExpr :: Bool,_cat_Inh_MaybeScalarExpr :: Catalog,_downEnv_Inh_MaybeScalarExpr :: Environment,_expectedCast_Inh_MaybeScalarExpr :: Bool,_expectedType_Inh_MaybeScalarExpr :: (Maybe TypeExtra),_flags_Inh_MaybeScalarExpr :: TypeCheckFlags,_imCast_Inh_MaybeScalarExpr :: (Maybe TypeExtra)}
data Syn_MaybeScalarExpr = Syn_MaybeScalarExpr {_annotatedTree_Syn_MaybeScalarExpr :: MaybeScalarExpr,_originalTree_Syn_MaybeScalarExpr :: MaybeScalarExpr,_upType_Syn_MaybeScalarExpr :: (Maybe TypeExtra)}
_wrap_MaybeScalarExpr :: T_MaybeScalarExpr ->
                        Inh_MaybeScalarExpr ->
                        Syn_MaybeScalarExpr
_wrap_MaybeScalarExpr sem (Inh_MaybeScalarExpr _lhsIassignmentCastContext _lhsIcat _lhsIdownEnv _lhsIexpectedCast _lhsIexpectedType _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupType) = sem _lhsIassignmentCastContext _lhsIcat _lhsIdownEnv _lhsIexpectedCast _lhsIexpectedType _lhsIflags _lhsIimCast
     in  (Syn_MaybeScalarExpr _lhsOannotatedTree _lhsOoriginalTree _lhsOupType))
_sem_MaybeScalarExpr_Just :: T_ScalarExpr ->
                            T_MaybeScalarExpr
_sem_MaybeScalarExpr_Just just_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast ->
         (let _justOodbcFunction :: Bool
              _lhsOannotatedTree :: MaybeScalarExpr
              _lhsOoriginalTree :: MaybeScalarExpr
              _lhsOupType :: (Maybe TypeExtra)
              _justOassignmentCastContext :: Bool
              _justOcat :: Catalog
              _justOdownEnv :: Environment
              _justOexpectedCast :: Bool
              _justOexpectedType :: (Maybe TypeExtra)
              _justOflags :: TypeCheckFlags
              _justOimCast :: (Maybe TypeExtra)
              _justIannotatedTree :: ScalarExpr
              _justIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _justIoriginalTree :: ScalarExpr
              _justIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 146, column 12)
              _justOodbcFunction =
                  ({-# LINE 146 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 6249 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Just _justIannotatedTree
                   {-# LINE 6255 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Just _justIoriginalTree
                   {-# LINE 6261 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 6267 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 6273 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (up)
              _lhsOupType =
                  ({-# LINE 109 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _justIupType
                   {-# LINE 6279 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 6285 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 6291 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 6297 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOexpectedCast =
                  ({-# LINE 111 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIexpectedCast
                   {-# LINE 6303 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOexpectedType =
                  ({-# LINE 110 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIexpectedType
                   {-# LINE 6309 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 6315 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 6321 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _justIannotatedTree,_justIcolExprs,_justIoriginalTree,_justIupType) =
                  just_ _justOassignmentCastContext _justOcat _justOdownEnv _justOexpectedCast _justOexpectedType _justOflags _justOimCast _justOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupType)))
_sem_MaybeScalarExpr_Nothing :: T_MaybeScalarExpr
_sem_MaybeScalarExpr_Nothing =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOupType :: (Maybe TypeExtra)
              _lhsOannotatedTree :: MaybeScalarExpr
              _lhsOoriginalTree :: MaybeScalarExpr
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 120, column 15)
              _lhsOupType =
                  ({-# LINE 120 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Nothing
                   {-# LINE 6342 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Nothing
                   {-# LINE 6348 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Nothing
                   {-# LINE 6354 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 6360 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 6366 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupType)))
-- MaybeSelectList ---------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : MaybeSelectList 
         originalTree         : MaybeSelectList 
   alternatives:
      alternative Just:
         child just           : SelectList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nothing:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type MaybeSelectList = Maybe (SelectList)
-- cata
_sem_MaybeSelectList :: MaybeSelectList ->
                       T_MaybeSelectList
_sem_MaybeSelectList (Prelude.Just x) =
    (_sem_MaybeSelectList_Just (_sem_SelectList x))
_sem_MaybeSelectList Prelude.Nothing =
    _sem_MaybeSelectList_Nothing
-- semantic domain
type T_MaybeSelectList = Catalog ->
                         TypeCheckFlags ->
                         (Maybe TypeExtra) ->
                         ( MaybeSelectList,MaybeSelectList)
data Inh_MaybeSelectList = Inh_MaybeSelectList {_cat_Inh_MaybeSelectList :: Catalog,_flags_Inh_MaybeSelectList :: TypeCheckFlags,_imCast_Inh_MaybeSelectList :: (Maybe TypeExtra)}
data Syn_MaybeSelectList = Syn_MaybeSelectList {_annotatedTree_Syn_MaybeSelectList :: MaybeSelectList,_originalTree_Syn_MaybeSelectList :: MaybeSelectList}
_wrap_MaybeSelectList :: T_MaybeSelectList ->
                        Inh_MaybeSelectList ->
                        Syn_MaybeSelectList
_wrap_MaybeSelectList sem (Inh_MaybeSelectList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_MaybeSelectList _lhsOannotatedTree _lhsOoriginalTree))
_sem_MaybeSelectList_Just :: T_SelectList ->
                            T_MaybeSelectList
_sem_MaybeSelectList_Just just_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _justOdownEnv :: Environment
              _justOexpectedCast :: Bool
              _justOexpectedType :: (Maybe [TypeExtra])
              _justOassignmentCastContext :: Bool
              _lhsOannotatedTree :: MaybeSelectList
              _lhsOoriginalTree :: MaybeSelectList
              _justOcat :: Catalog
              _justOflags :: TypeCheckFlags
              _justOimCast :: (Maybe TypeExtra)
              _justIannotatedTree :: SelectList
              _justIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _justIoriginalTree :: SelectList
              _justIupEnv :: Environment
              _justIupType :: (Maybe [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 68, column 28)
              _justOdownEnv =
                  ({-# LINE 68 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 6435 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 69, column 28)
              _justOexpectedCast =
                  ({-# LINE 69 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 6441 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 70, column 28)
              _justOexpectedType =
                  ({-# LINE 70 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 6447 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 815, column 28)
              _justOassignmentCastContext =
                  ({-# LINE 815 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 6453 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Just _justIannotatedTree
                   {-# LINE 6459 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Just _justIoriginalTree
                   {-# LINE 6465 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 6471 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 6477 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 6483 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 6489 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 6495 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _justIannotatedTree,_justIcolExprs,_justIoriginalTree,_justIupEnv,_justIupType) =
                  just_ _justOassignmentCastContext _justOcat _justOdownEnv _justOexpectedCast _justOexpectedType _justOflags _justOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_MaybeSelectList_Nothing :: T_MaybeSelectList
_sem_MaybeSelectList_Nothing =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: MaybeSelectList
              _lhsOoriginalTree :: MaybeSelectList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Nothing
                   {-# LINE 6511 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Nothing
                   {-# LINE 6517 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 6523 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 6529 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- MaybeTablePartitionDef --------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : MaybeTablePartitionDef 
         originalTree         : MaybeTablePartitionDef 
   alternatives:
      alternative Just:
         child just           : TablePartitionDef 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nothing:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type MaybeTablePartitionDef = Maybe (TablePartitionDef)
-- cata
_sem_MaybeTablePartitionDef :: MaybeTablePartitionDef ->
                              T_MaybeTablePartitionDef
_sem_MaybeTablePartitionDef (Prelude.Just x) =
    (_sem_MaybeTablePartitionDef_Just (_sem_TablePartitionDef x))
_sem_MaybeTablePartitionDef Prelude.Nothing =
    _sem_MaybeTablePartitionDef_Nothing
-- semantic domain
type T_MaybeTablePartitionDef = Catalog ->
                                TypeCheckFlags ->
                                (Maybe TypeExtra) ->
                                ( MaybeTablePartitionDef,MaybeTablePartitionDef)
data Inh_MaybeTablePartitionDef = Inh_MaybeTablePartitionDef {_cat_Inh_MaybeTablePartitionDef :: Catalog,_flags_Inh_MaybeTablePartitionDef :: TypeCheckFlags,_imCast_Inh_MaybeTablePartitionDef :: (Maybe TypeExtra)}
data Syn_MaybeTablePartitionDef = Syn_MaybeTablePartitionDef {_annotatedTree_Syn_MaybeTablePartitionDef :: MaybeTablePartitionDef,_originalTree_Syn_MaybeTablePartitionDef :: MaybeTablePartitionDef}
_wrap_MaybeTablePartitionDef :: T_MaybeTablePartitionDef ->
                               Inh_MaybeTablePartitionDef ->
                               Syn_MaybeTablePartitionDef
_wrap_MaybeTablePartitionDef sem (Inh_MaybeTablePartitionDef _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_MaybeTablePartitionDef _lhsOannotatedTree _lhsOoriginalTree))
_sem_MaybeTablePartitionDef_Just :: T_TablePartitionDef ->
                                   T_MaybeTablePartitionDef
_sem_MaybeTablePartitionDef_Just just_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: MaybeTablePartitionDef
              _lhsOoriginalTree :: MaybeTablePartitionDef
              _justOcat :: Catalog
              _justOflags :: TypeCheckFlags
              _justOimCast :: (Maybe TypeExtra)
              _justIannotatedTree :: TablePartitionDef
              _justIoriginalTree :: TablePartitionDef
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Just _justIannotatedTree
                   {-# LINE 6591 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Just _justIoriginalTree
                   {-# LINE 6597 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 6603 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 6609 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 6615 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 6621 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 6627 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _justIannotatedTree,_justIoriginalTree) =
                  just_ _justOcat _justOflags _justOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_MaybeTablePartitionDef_Nothing :: T_MaybeTablePartitionDef
_sem_MaybeTablePartitionDef_Nothing =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: MaybeTablePartitionDef
              _lhsOoriginalTree :: MaybeTablePartitionDef
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Nothing
                   {-# LINE 6643 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Nothing
                   {-# LINE 6649 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 6655 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 6661 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- Name --------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
         tpe                  : Either [TypeError] TypeExtra
      synthesized attributes:
         annotatedTree        : Name 
         originalTree         : Name 
   alternatives:
      alternative Name:
         child ann            : Annotation 
         child is             : {[NameComponent]}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AntiName:
         child string         : {String}
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data Name = Name (Annotation) (([NameComponent]))
          | AntiName (String)
          deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_Name :: Name ->
            T_Name
_sem_Name (Name _ann _is) =
    (_sem_Name_Name (_sem_Annotation _ann) _is)
_sem_Name (AntiName _string) =
    (_sem_Name_AntiName _string)
-- semantic domain
type T_Name = Catalog ->
              TypeCheckFlags ->
              (Maybe TypeExtra) ->
              (Either [TypeError] TypeExtra) ->
              ( Name,Name)
data Inh_Name = Inh_Name {_cat_Inh_Name :: Catalog,_flags_Inh_Name :: TypeCheckFlags,_imCast_Inh_Name :: (Maybe TypeExtra),_tpe_Inh_Name :: (Either [TypeError] TypeExtra)}
data Syn_Name = Syn_Name {_annotatedTree_Syn_Name :: Name,_originalTree_Syn_Name :: Name}
_wrap_Name :: T_Name ->
             Inh_Name ->
             Syn_Name
_wrap_Name sem (Inh_Name _lhsIcat _lhsIflags _lhsIimCast _lhsItpe) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast _lhsItpe
     in  (Syn_Name _lhsOannotatedTree _lhsOoriginalTree))
_sem_Name_Name :: T_Annotation ->
                 ([NameComponent]) ->
                 T_Name
_sem_Name_Name ann_ is_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast
       _lhsItpe ->
         (let _lhsOannotatedTree :: Name
              _lhsOoriginalTree :: Name
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Name _annIannotatedTree is_
                   {-# LINE 6732 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Name _annIoriginalTree is_
                   {-# LINE 6738 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 6744 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 6750 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 6756 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 6762 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 6768 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOtpe =
                  ({-# LINE 126 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsItpe
                   {-# LINE 6774 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Name_AntiName :: String ->
                     T_Name
_sem_Name_AntiName string_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast
       _lhsItpe ->
         (let _lhsOannotatedTree :: Name
              _lhsOoriginalTree :: Name
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AntiName string_
                   {-# LINE 6792 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AntiName string_
                   {-# LINE 6798 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 6804 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 6810 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- NameComponentList -------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : NameComponentList 
         originalTree         : NameComponentList 
   alternatives:
      alternative Cons:
         child hd             : {NameComponent}
         child tl             : NameComponentList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type NameComponentList = [(NameComponent)]
-- cata
_sem_NameComponentList :: NameComponentList ->
                         T_NameComponentList
_sem_NameComponentList list =
    (Prelude.foldr _sem_NameComponentList_Cons _sem_NameComponentList_Nil list)
-- semantic domain
type T_NameComponentList = Catalog ->
                           TypeCheckFlags ->
                           (Maybe TypeExtra) ->
                           ( NameComponentList,NameComponentList)
data Inh_NameComponentList = Inh_NameComponentList {_cat_Inh_NameComponentList :: Catalog,_flags_Inh_NameComponentList :: TypeCheckFlags,_imCast_Inh_NameComponentList :: (Maybe TypeExtra)}
data Syn_NameComponentList = Syn_NameComponentList {_annotatedTree_Syn_NameComponentList :: NameComponentList,_originalTree_Syn_NameComponentList :: NameComponentList}
_wrap_NameComponentList :: T_NameComponentList ->
                          Inh_NameComponentList ->
                          Syn_NameComponentList
_wrap_NameComponentList sem (Inh_NameComponentList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_NameComponentList _lhsOannotatedTree _lhsOoriginalTree))
_sem_NameComponentList_Cons :: NameComponent ->
                              T_NameComponentList ->
                              T_NameComponentList
_sem_NameComponentList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: NameComponentList
              _lhsOoriginalTree :: NameComponentList
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _tlIannotatedTree :: NameComponentList
              _tlIoriginalTree :: NameComponentList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) hd_ _tlIannotatedTree
                   {-# LINE 6872 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) hd_ _tlIoriginalTree
                   {-# LINE 6878 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 6884 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 6890 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 6896 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 6902 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 6908 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _tlIannotatedTree,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_NameComponentList_Nil :: T_NameComponentList
_sem_NameComponentList_Nil =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: NameComponentList
              _lhsOoriginalTree :: NameComponentList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 6924 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 6930 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 6936 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 6942 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- NameTypeNameListPair ----------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : NameTypeNameListPair 
         originalTree         : NameTypeNameListPair 
   alternatives:
      alternative Tuple:
         child x1             : Name 
         child x2             : TypeNameList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type NameTypeNameListPair = ( Name,TypeNameList)
-- cata
_sem_NameTypeNameListPair :: NameTypeNameListPair ->
                            T_NameTypeNameListPair
_sem_NameTypeNameListPair ( x1,x2) =
    (_sem_NameTypeNameListPair_Tuple (_sem_Name x1) (_sem_TypeNameList x2))
-- semantic domain
type T_NameTypeNameListPair = Catalog ->
                              TypeCheckFlags ->
                              (Maybe TypeExtra) ->
                              ( NameTypeNameListPair,NameTypeNameListPair)
data Inh_NameTypeNameListPair = Inh_NameTypeNameListPair {_cat_Inh_NameTypeNameListPair :: Catalog,_flags_Inh_NameTypeNameListPair :: TypeCheckFlags,_imCast_Inh_NameTypeNameListPair :: (Maybe TypeExtra)}
data Syn_NameTypeNameListPair = Syn_NameTypeNameListPair {_annotatedTree_Syn_NameTypeNameListPair :: NameTypeNameListPair,_originalTree_Syn_NameTypeNameListPair :: NameTypeNameListPair}
_wrap_NameTypeNameListPair :: T_NameTypeNameListPair ->
                             Inh_NameTypeNameListPair ->
                             Syn_NameTypeNameListPair
_wrap_NameTypeNameListPair sem (Inh_NameTypeNameListPair _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_NameTypeNameListPair _lhsOannotatedTree _lhsOoriginalTree))
_sem_NameTypeNameListPair_Tuple :: T_Name ->
                                  T_TypeNameList ->
                                  T_NameTypeNameListPair
_sem_NameTypeNameListPair_Tuple x1_ x2_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _x1Otpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: NameTypeNameListPair
              _lhsOoriginalTree :: NameTypeNameListPair
              _x1Ocat :: Catalog
              _x1Oflags :: TypeCheckFlags
              _x1OimCast :: (Maybe TypeExtra)
              _x2Ocat :: Catalog
              _x2Oflags :: TypeCheckFlags
              _x2OimCast :: (Maybe TypeExtra)
              _x1IannotatedTree :: Name
              _x1IoriginalTree :: Name
              _x2IannotatedTree :: TypeNameList
              _x2IoriginalTree :: TypeNameList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 71, column 34)
              _x1Otpe =
                  ({-# LINE 71 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 7006 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (_x1IannotatedTree,_x2IannotatedTree)
                   {-# LINE 7012 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (_x1IoriginalTree,_x2IoriginalTree)
                   {-# LINE 7018 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 7024 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 7030 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1Ocat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 7036 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1Oflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 7042 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1OimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 7048 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x2Ocat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 7054 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x2Oflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 7060 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x2OimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 7066 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _x1IannotatedTree,_x1IoriginalTree) =
                  x1_ _x1Ocat _x1Oflags _x1OimCast _x1Otpe
              ( _x2IannotatedTree,_x2IoriginalTree) =
                  x2_ _x2Ocat _x2Oflags _x2OimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- NameTypeNameListPairList ------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : NameTypeNameListPairList 
         originalTree         : NameTypeNameListPairList 
   alternatives:
      alternative Cons:
         child hd             : NameTypeNameListPair 
         child tl             : NameTypeNameListPairList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type NameTypeNameListPairList = [NameTypeNameListPair]
-- cata
_sem_NameTypeNameListPairList :: NameTypeNameListPairList ->
                                T_NameTypeNameListPairList
_sem_NameTypeNameListPairList list =
    (Prelude.foldr _sem_NameTypeNameListPairList_Cons _sem_NameTypeNameListPairList_Nil (Prelude.map _sem_NameTypeNameListPair list))
-- semantic domain
type T_NameTypeNameListPairList = Catalog ->
                                  TypeCheckFlags ->
                                  (Maybe TypeExtra) ->
                                  ( NameTypeNameListPairList,NameTypeNameListPairList)
data Inh_NameTypeNameListPairList = Inh_NameTypeNameListPairList {_cat_Inh_NameTypeNameListPairList :: Catalog,_flags_Inh_NameTypeNameListPairList :: TypeCheckFlags,_imCast_Inh_NameTypeNameListPairList :: (Maybe TypeExtra)}
data Syn_NameTypeNameListPairList = Syn_NameTypeNameListPairList {_annotatedTree_Syn_NameTypeNameListPairList :: NameTypeNameListPairList,_originalTree_Syn_NameTypeNameListPairList :: NameTypeNameListPairList}
_wrap_NameTypeNameListPairList :: T_NameTypeNameListPairList ->
                                 Inh_NameTypeNameListPairList ->
                                 Syn_NameTypeNameListPairList
_wrap_NameTypeNameListPairList sem (Inh_NameTypeNameListPairList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_NameTypeNameListPairList _lhsOannotatedTree _lhsOoriginalTree))
_sem_NameTypeNameListPairList_Cons :: T_NameTypeNameListPair ->
                                     T_NameTypeNameListPairList ->
                                     T_NameTypeNameListPairList
_sem_NameTypeNameListPairList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: NameTypeNameListPairList
              _lhsOoriginalTree :: NameTypeNameListPairList
              _hdOcat :: Catalog
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: NameTypeNameListPair
              _hdIoriginalTree :: NameTypeNameListPair
              _tlIannotatedTree :: NameTypeNameListPairList
              _tlIoriginalTree :: NameTypeNameListPairList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 7137 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 7143 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 7149 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 7155 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 7161 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 7167 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 7173 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 7179 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 7185 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 7191 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree) =
                  hd_ _hdOcat _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_NameTypeNameListPairList_Nil :: T_NameTypeNameListPairList
_sem_NameTypeNameListPairList_Nil =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: NameTypeNameListPairList
              _lhsOoriginalTree :: NameTypeNameListPairList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 7209 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 7215 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 7221 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 7227 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- OnExpr ------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         downEnv              : Environment
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : OnExpr 
         originalTree         : OnExpr 
   alternatives:
      alternative Just:
         child just           : JoinExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nothing:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type OnExpr = Maybe (JoinExpr)
-- cata
_sem_OnExpr :: OnExpr ->
              T_OnExpr
_sem_OnExpr (Prelude.Just x) =
    (_sem_OnExpr_Just (_sem_JoinExpr x))
_sem_OnExpr Prelude.Nothing =
    _sem_OnExpr_Nothing
-- semantic domain
type T_OnExpr = Catalog ->
                Environment ->
                TypeCheckFlags ->
                (Maybe TypeExtra) ->
                ( OnExpr,OnExpr)
data Inh_OnExpr = Inh_OnExpr {_cat_Inh_OnExpr :: Catalog,_downEnv_Inh_OnExpr :: Environment,_flags_Inh_OnExpr :: TypeCheckFlags,_imCast_Inh_OnExpr :: (Maybe TypeExtra)}
data Syn_OnExpr = Syn_OnExpr {_annotatedTree_Syn_OnExpr :: OnExpr,_originalTree_Syn_OnExpr :: OnExpr}
_wrap_OnExpr :: T_OnExpr ->
               Inh_OnExpr ->
               Syn_OnExpr
_wrap_OnExpr sem (Inh_OnExpr _lhsIcat _lhsIdownEnv _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIdownEnv _lhsIflags _lhsIimCast
     in  (Syn_OnExpr _lhsOannotatedTree _lhsOoriginalTree))
_sem_OnExpr_Just :: T_JoinExpr ->
                   T_OnExpr
_sem_OnExpr_Just just_ =
    (\ _lhsIcat
       _lhsIdownEnv
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: OnExpr
              _lhsOoriginalTree :: OnExpr
              _justOcat :: Catalog
              _justOdownEnv :: Environment
              _justOflags :: TypeCheckFlags
              _justOimCast :: (Maybe TypeExtra)
              _justIannotatedTree :: JoinExpr
              _justIoriginalTree :: JoinExpr
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Just _justIannotatedTree
                   {-# LINE 7293 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Just _justIoriginalTree
                   {-# LINE 7299 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 7305 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 7311 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 7317 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOdownEnv =
                  ({-# LINE 215 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 7323 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 7329 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _justOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 7335 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _justIannotatedTree,_justIoriginalTree) =
                  just_ _justOcat _justOdownEnv _justOflags _justOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_OnExpr_Nothing :: T_OnExpr
_sem_OnExpr_Nothing =
    (\ _lhsIcat
       _lhsIdownEnv
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: OnExpr
              _lhsOoriginalTree :: OnExpr
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Nothing
                   {-# LINE 7352 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Nothing
                   {-# LINE 7358 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 7364 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 7370 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- ParamDef ----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : ParamDef 
         originalTree         : ParamDef 
   alternatives:
      alternative ParamDef:
         child ann            : Annotation 
         child name           : {NameComponent}
         child typ            : TypeName 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative ParamDefTp:
         child ann            : Annotation 
         child typ            : TypeName 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data ParamDef = ParamDef (Annotation) (NameComponent) (TypeName)
              | ParamDefTp (Annotation) (TypeName)
              deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_ParamDef :: ParamDef ->
                T_ParamDef
_sem_ParamDef (ParamDef _ann _name _typ) =
    (_sem_ParamDef_ParamDef (_sem_Annotation _ann) _name (_sem_TypeName _typ))
_sem_ParamDef (ParamDefTp _ann _typ) =
    (_sem_ParamDef_ParamDefTp (_sem_Annotation _ann) (_sem_TypeName _typ))
-- semantic domain
type T_ParamDef = Catalog ->
                  TypeCheckFlags ->
                  (Maybe TypeExtra) ->
                  ( ParamDef,ParamDef)
data Inh_ParamDef = Inh_ParamDef {_cat_Inh_ParamDef :: Catalog,_flags_Inh_ParamDef :: TypeCheckFlags,_imCast_Inh_ParamDef :: (Maybe TypeExtra)}
data Syn_ParamDef = Syn_ParamDef {_annotatedTree_Syn_ParamDef :: ParamDef,_originalTree_Syn_ParamDef :: ParamDef}
_wrap_ParamDef :: T_ParamDef ->
                 Inh_ParamDef ->
                 Syn_ParamDef
_wrap_ParamDef sem (Inh_ParamDef _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_ParamDef _lhsOannotatedTree _lhsOoriginalTree))
_sem_ParamDef_ParamDef :: T_Annotation ->
                         NameComponent ->
                         T_TypeName ->
                         T_ParamDef
_sem_ParamDef_ParamDef ann_ name_ typ_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: ParamDef
              _lhsOoriginalTree :: ParamDef
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _typOcat :: Catalog
              _typOflags :: TypeCheckFlags
              _typOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _typIannotatedTree :: TypeName
              _typInamedType :: (Maybe TypeExtra)
              _typIoriginalTree :: TypeName
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 72, column 25)
              _annOtpe =
                  ({-# LINE 72 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 7447 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ParamDef _annIannotatedTree name_ _typIannotatedTree
                   {-# LINE 7453 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ParamDef _annIoriginalTree name_ _typIoriginalTree
                   {-# LINE 7459 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 7465 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 7471 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 7477 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 7483 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 7489 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 7495 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 7501 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 7507 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _typIannotatedTree,_typInamedType,_typIoriginalTree) =
                  typ_ _typOcat _typOflags _typOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_ParamDef_ParamDefTp :: T_Annotation ->
                           T_TypeName ->
                           T_ParamDef
_sem_ParamDef_ParamDefTp ann_ typ_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: ParamDef
              _lhsOoriginalTree :: ParamDef
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _typOcat :: Catalog
              _typOflags :: TypeCheckFlags
              _typOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _typIannotatedTree :: TypeName
              _typInamedType :: (Maybe TypeExtra)
              _typIoriginalTree :: TypeName
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 73, column 27)
              _annOtpe =
                  ({-# LINE 73 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 7539 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ParamDefTp _annIannotatedTree _typIannotatedTree
                   {-# LINE 7545 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ParamDefTp _annIoriginalTree _typIoriginalTree
                   {-# LINE 7551 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 7557 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 7563 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 7569 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 7575 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 7581 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 7587 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 7593 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 7599 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _typIannotatedTree,_typInamedType,_typIoriginalTree) =
                  typ_ _typOcat _typOflags _typOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- ParamDefList ------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : ParamDefList 
         originalTree         : ParamDefList 
   alternatives:
      alternative Cons:
         child hd             : ParamDef 
         child tl             : ParamDefList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type ParamDefList = [ParamDef]
-- cata
_sem_ParamDefList :: ParamDefList ->
                    T_ParamDefList
_sem_ParamDefList list =
    (Prelude.foldr _sem_ParamDefList_Cons _sem_ParamDefList_Nil (Prelude.map _sem_ParamDef list))
-- semantic domain
type T_ParamDefList = Catalog ->
                      TypeCheckFlags ->
                      (Maybe TypeExtra) ->
                      ( ParamDefList,ParamDefList)
data Inh_ParamDefList = Inh_ParamDefList {_cat_Inh_ParamDefList :: Catalog,_flags_Inh_ParamDefList :: TypeCheckFlags,_imCast_Inh_ParamDefList :: (Maybe TypeExtra)}
data Syn_ParamDefList = Syn_ParamDefList {_annotatedTree_Syn_ParamDefList :: ParamDefList,_originalTree_Syn_ParamDefList :: ParamDefList}
_wrap_ParamDefList :: T_ParamDefList ->
                     Inh_ParamDefList ->
                     Syn_ParamDefList
_wrap_ParamDefList sem (Inh_ParamDefList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_ParamDefList _lhsOannotatedTree _lhsOoriginalTree))
_sem_ParamDefList_Cons :: T_ParamDef ->
                         T_ParamDefList ->
                         T_ParamDefList
_sem_ParamDefList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: ParamDefList
              _lhsOoriginalTree :: ParamDefList
              _hdOcat :: Catalog
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: ParamDef
              _hdIoriginalTree :: ParamDef
              _tlIannotatedTree :: ParamDefList
              _tlIoriginalTree :: ParamDefList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 7670 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 7676 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 7682 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 7688 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 7694 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 7700 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 7706 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 7712 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 7718 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 7724 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree) =
                  hd_ _hdOcat _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_ParamDefList_Nil :: T_ParamDefList
_sem_ParamDefList_Nil =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: ParamDefList
              _lhsOoriginalTree :: ParamDefList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 7742 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 7748 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 7754 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 7760 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- QueryExpr ---------------------------------------------------
{-
   visit 0:
      inherited attributes:
         assignmentCastContext : Bool
         cat                  : Catalog
         expectedType         : Maybe [TypeExtra]
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
         outerDownEnv         : Maybe Environment
      synthesized attributes:
         annotatedTree        : QueryExpr 
         originalTree         : QueryExpr 
         upType               : Maybe [(Text,TypeExtra)]
   alternatives:
      alternative Select:
         child ann            : Annotation 
         child selDistinct    : {Distinct}
         child selSelectList  : SelectList 
         child selTref        : TableRefList 
         child selWhere       : MaybeBoolExpr 
         child selGroupBy     : ScalarExprList 
         child selHaving      : MaybeBoolExpr 
         child selOrderBy     : ScalarExprDirectionPairList 
         child selLimit       : MaybeScalarExpr 
         child selOffset      : MaybeScalarExpr 
         child selOption      : {[QueryHint]}
         visit 0:
            local tpee        : {Either [TypeError] [(Text,TypeExtra)]}
            local tpe         : {Either [TypeError] TypeExtra}
            local selGroupBy  : _
            local annotatedTree : _
            local originalTree : _
      alternative CombineQueryExpr:
         child ann            : Annotation 
         child cqType         : {CombineType}
         child cqQe0          : QueryExpr 
         child cqQe1          : QueryExpr 
         visit 0:
            local tpe         : {Either [TypeError] TypeExtra}
            local tpee        : {Either [TypeError] [(Text,TypeExtra)]}
            local annotatedTree : _
            local originalTree : _
      alternative Values:
         child ann            : Annotation 
         child qeValues       : ScalarExprListList 
         visit 0:
            local tpe         : {Either [TypeError] TypeExtra}
            local tpee        : {Either [TypeError] [(Text,TypeExtra)]}
            local annotatedTree : _
            local originalTree : _
      alternative WithQueryExpr:
         child ann            : Annotation 
         child withs          : WithQueryList 
         child withQe         : QueryExpr 
         visit 0:
            local tpe         : {Either [TypeError] TypeExtra}
            local tpee        : {Either [TypeError] [(Text,TypeExtra)]}
            local annotatedTree : _
            local originalTree : _
-}

data QueryExpr
    = Select { ann:: (Annotation)
             ,selDistinct :: ( Distinct)
             ,selSelectList :: ( SelectList)
             ,selTref :: ( TableRefList)
             ,selWhere :: ( MaybeBoolExpr)
             ,selGroupBy :: ( ScalarExprList)
             ,selHaving :: ( MaybeBoolExpr)
             ,selOrderBy :: ( ScalarExprDirectionPairList)
             ,selLimit :: ( MaybeScalarExpr)
             ,selOffset :: ( MaybeScalarExpr)
             ,selOption :: ( [QueryHint])
        }
    |  CombineQueryExpr { ann:: (Annotation)
                       ,cqType :: ( CombineType)
                       ,cqQe0 :: ( QueryExpr)
                       ,cqQe1 :: ( QueryExpr)
        }
    |  Values { ann:: (Annotation)
             ,qeValues:: (ScalarExprListList)
        }
    |  WithQueryExpr { ann :: ( Annotation)
                    ,withs :: ( WithQueryList)
                    ,withQe :: ( QueryExpr)

-- todo: represent parens explicitly in queryexpr
--    | QueryExprParens ex:: QueryExpr


    } deriving (Eq,Show,Data,Typeable)

-- cata
_sem_QueryExpr :: QueryExpr ->
                 T_QueryExpr
_sem_QueryExpr (Select _ann _selDistinct _selSelectList _selTref _selWhere _selGroupBy _selHaving _selOrderBy _selLimit _selOffset _selOption) =
    (_sem_QueryExpr_Select (_sem_Annotation _ann) _selDistinct (_sem_SelectList _selSelectList) (_sem_TableRefList _selTref) (_sem_MaybeBoolExpr _selWhere) (_sem_ScalarExprList _selGroupBy) (_sem_MaybeBoolExpr _selHaving) (_sem_ScalarExprDirectionPairList _selOrderBy) (_sem_MaybeScalarExpr _selLimit) (_sem_MaybeScalarExpr _selOffset) _selOption)
_sem_QueryExpr (CombineQueryExpr _ann _cqType _cqQe0 _cqQe1) =
    (_sem_QueryExpr_CombineQueryExpr (_sem_Annotation _ann) _cqType (_sem_QueryExpr _cqQe0) (_sem_QueryExpr _cqQe1))
_sem_QueryExpr (Values _ann _qeValues) =
    (_sem_QueryExpr_Values (_sem_Annotation _ann) (_sem_ScalarExprListList _qeValues))
_sem_QueryExpr (WithQueryExpr _ann _withs _withQe) =
    (_sem_QueryExpr_WithQueryExpr (_sem_Annotation _ann) (_sem_WithQueryList _withs) (_sem_QueryExpr _withQe))
-- semantic domain
type T_QueryExpr = Bool ->
                   Catalog ->
                   (Maybe [TypeExtra]) ->
                   TypeCheckFlags ->
                   (Maybe TypeExtra) ->
                   (Maybe Environment) ->
                   ( QueryExpr,QueryExpr,(Maybe [(Text,TypeExtra)]))
data Inh_QueryExpr = Inh_QueryExpr {_assignmentCastContext_Inh_QueryExpr :: Bool,_cat_Inh_QueryExpr :: Catalog,_expectedType_Inh_QueryExpr :: (Maybe [TypeExtra]),_flags_Inh_QueryExpr :: TypeCheckFlags,_imCast_Inh_QueryExpr :: (Maybe TypeExtra),_outerDownEnv_Inh_QueryExpr :: (Maybe Environment)}
data Syn_QueryExpr = Syn_QueryExpr {_annotatedTree_Syn_QueryExpr :: QueryExpr,_originalTree_Syn_QueryExpr :: QueryExpr,_upType_Syn_QueryExpr :: (Maybe [(Text,TypeExtra)])}
_wrap_QueryExpr :: T_QueryExpr ->
                  Inh_QueryExpr ->
                  Syn_QueryExpr
_wrap_QueryExpr sem (Inh_QueryExpr _lhsIassignmentCastContext _lhsIcat _lhsIexpectedType _lhsIflags _lhsIimCast _lhsIouterDownEnv) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupType) = sem _lhsIassignmentCastContext _lhsIcat _lhsIexpectedType _lhsIflags _lhsIimCast _lhsIouterDownEnv
     in  (Syn_QueryExpr _lhsOannotatedTree _lhsOoriginalTree _lhsOupType))
_sem_QueryExpr_Select :: T_Annotation ->
                        Distinct ->
                        T_SelectList ->
                        T_TableRefList ->
                        T_MaybeBoolExpr ->
                        T_ScalarExprList ->
                        T_MaybeBoolExpr ->
                        T_ScalarExprDirectionPairList ->
                        T_MaybeScalarExpr ->
                        T_MaybeScalarExpr ->
                        ([QueryHint]) ->
                        T_QueryExpr
_sem_QueryExpr_Select ann_ selDistinct_ selSelectList_ selTref_ selWhere_ selGroupBy_ selHaving_ selOrderBy_ selLimit_ selOffset_ selOption_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIouterDownEnv ->
         (let _selGroupByOexpectedCast :: Bool
              _selLimitOdownEnv :: Environment
              _selLimitOexpectedCast :: Bool
              _selOffsetOdownEnv :: Environment
              _selOffsetOexpectedCast :: Bool
              _selSelectListOexpectedCast :: Bool
              _selSelectListOdownEnv :: Environment
              _selGroupByOdownEnv :: Environment
              _selHavingOdownEnv :: Environment
              _selOrderByOdownEnv :: Environment
              _tpee :: (Either [TypeError] [(Text,TypeExtra)])
              _selWhereOdownEnv :: Environment
              _tpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe [(Text,TypeExtra)])
              _lhsOannotatedTree :: QueryExpr
              _selGroupByOexpectedTypes :: ([TypeExtra])
              _selLimitOexpectedType :: (Maybe TypeExtra)
              _selOffsetOexpectedType :: (Maybe TypeExtra)
              _lhsOoriginalTree :: QueryExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _selSelectListOassignmentCastContext :: Bool
              _selSelectListOcat :: Catalog
              _selSelectListOexpectedType :: (Maybe [TypeExtra])
              _selSelectListOflags :: TypeCheckFlags
              _selSelectListOimCast :: (Maybe TypeExtra)
              _selTrefOcat :: Catalog
              _selTrefOflags :: TypeCheckFlags
              _selTrefOimCast :: (Maybe TypeExtra)
              _selWhereOcat :: Catalog
              _selWhereOflags :: TypeCheckFlags
              _selWhereOimCast :: (Maybe TypeExtra)
              _selGroupByOassignmentCastContext :: Bool
              _selGroupByOcat :: Catalog
              _selGroupByOflags :: TypeCheckFlags
              _selGroupByOimCast :: (Maybe TypeExtra)
              _selHavingOcat :: Catalog
              _selHavingOflags :: TypeCheckFlags
              _selHavingOimCast :: (Maybe TypeExtra)
              _selOrderByOcat :: Catalog
              _selOrderByOflags :: TypeCheckFlags
              _selOrderByOimCast :: (Maybe TypeExtra)
              _selLimitOassignmentCastContext :: Bool
              _selLimitOcat :: Catalog
              _selLimitOflags :: TypeCheckFlags
              _selLimitOimCast :: (Maybe TypeExtra)
              _selOffsetOassignmentCastContext :: Bool
              _selOffsetOcat :: Catalog
              _selOffsetOflags :: TypeCheckFlags
              _selOffsetOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _selSelectListIannotatedTree :: SelectList
              _selSelectListIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _selSelectListIoriginalTree :: SelectList
              _selSelectListIupEnv :: Environment
              _selSelectListIupType :: (Maybe [(Text,TypeExtra)])
              _selTrefIannotatedTree :: TableRefList
              _selTrefIoriginalTree :: TableRefList
              _selTrefIupEnv :: Environment
              _selWhereIannotatedTree :: MaybeBoolExpr
              _selWhereIoriginalTree :: MaybeBoolExpr
              _selGroupByIannotatedTree :: ScalarExprList
              _selGroupByIoriginalTree :: ScalarExprList
              _selGroupByIupTypes :: ([Maybe TypeExtra])
              _selHavingIannotatedTree :: MaybeBoolExpr
              _selHavingIoriginalTree :: MaybeBoolExpr
              _selOrderByIannotatedTree :: ScalarExprDirectionPairList
              _selOrderByIoriginalTree :: ScalarExprDirectionPairList
              _selLimitIannotatedTree :: MaybeScalarExpr
              _selLimitIoriginalTree :: MaybeScalarExpr
              _selLimitIupType :: (Maybe TypeExtra)
              _selOffsetIannotatedTree :: MaybeScalarExpr
              _selOffsetIoriginalTree :: MaybeScalarExpr
              _selOffsetIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 74, column 24)
              _selGroupByOexpectedCast =
                  ({-# LINE 74 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 7956 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 75, column 24)
              _selLimitOdownEnv =
                  ({-# LINE 75 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 7962 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 76, column 24)
              _selLimitOexpectedCast =
                  ({-# LINE 76 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 7968 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 77, column 24)
              _selOffsetOdownEnv =
                  ({-# LINE 77 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 7974 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 78, column 24)
              _selOffsetOexpectedCast =
                  ({-# LINE 78 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 7980 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 79, column 24)
              _selSelectListOexpectedCast =
                  ({-# LINE 79 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 7986 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 106, column 9)
              _selSelectListOdownEnv =
                  ({-# LINE 106 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _selTrefIupEnv
                   {-# LINE 7992 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 107, column 9)
              _selGroupByOdownEnv =
                  ({-# LINE 107 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _selTrefIupEnv
                   {-# LINE 7998 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 108, column 9)
              _selHavingOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _selTrefIupEnv
                   {-# LINE 8004 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 128, column 9)
              _selOrderByOdownEnv =
                  ({-# LINE 128 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   E.orderByEnvironment _selSelectListIupEnv _selTrefIupEnv
                   {-# LINE 8010 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 129, column 9)
              _tpee =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   maybe (Left []) Right _selSelectListIupType
                   {-# LINE 8016 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 132, column 9)
              _selWhereOdownEnv =
                  ({-# LINE 132 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   maybe _selTrefIupEnv
                    (\e -> E.createCorrelatedSubqueryEnvironment e _selTrefIupEnv)
                    _lhsIouterDownEnv
                   {-# LINE 8024 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 142, column 9)
              _tpe =
                  ({-# LINE 142 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   liftM (mkTypeExtra . CompositeType) _tpee
                   {-# LINE 8030 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 145, column 9)
              _lhsOupType =
                  ({-# LINE 145 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   either (const Nothing) Just _tpee
                   {-# LINE 8036 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 239, column 9)
              _selGroupBy =
                  ({-# LINE 239 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   case _selGroupByIannotatedTree of
                       [App e nm@(Name _ [Nmc "cube"]) es] ->
                         [App e{anType = (Just (mkTypeExtra $ ScalarType "int4"))
                               ,anErrs = []
                               } nm es]
                       x -> x
                   {-# LINE 8047 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 248, column 9)
              _lhsOannotatedTree =
                  ({-# LINE 248 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   Select _annIannotatedTree
                          selDistinct_
                          _selSelectListIannotatedTree
                          _selTrefIannotatedTree
                          _selWhereIannotatedTree
                          _selGroupBy
                          _selHavingIannotatedTree
                          _selOrderByIannotatedTree
                          _selLimitIannotatedTree
                          _selOffsetIannotatedTree
                          selOption_
                   {-# LINE 8063 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 766, column 7)
              _selGroupByOexpectedTypes =
                  ({-# LINE 766 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   []
                   {-# LINE 8069 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 767, column 7)
              _selLimitOexpectedType =
                  ({-# LINE 767 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Nothing
                   {-# LINE 8075 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 768, column 7)
              _selOffsetOexpectedType =
                  ({-# LINE 768 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Nothing
                   {-# LINE 8081 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Select _annIannotatedTree selDistinct_ _selSelectListIannotatedTree _selTrefIannotatedTree _selWhereIannotatedTree _selGroupByIannotatedTree _selHavingIannotatedTree _selOrderByIannotatedTree _selLimitIannotatedTree _selOffsetIannotatedTree selOption_
                   {-# LINE 8087 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Select _annIoriginalTree selDistinct_ _selSelectListIoriginalTree _selTrefIoriginalTree _selWhereIoriginalTree _selGroupByIoriginalTree _selHavingIoriginalTree _selOrderByIoriginalTree _selLimitIoriginalTree _selOffsetIoriginalTree selOption_
                   {-# LINE 8093 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 8099 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8105 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8111 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8117 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (from local)
              _annOtpe =
                  ({-# LINE 126 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _tpe
                   {-# LINE 8123 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selSelectListOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 8129 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selSelectListOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8135 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selSelectListOexpectedType =
                  ({-# LINE 159 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _lhsIexpectedType
                   {-# LINE 8141 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selSelectListOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8147 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selSelectListOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8153 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selTrefOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8159 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selTrefOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8165 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selTrefOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8171 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selWhereOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8177 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selWhereOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8183 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selWhereOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8189 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selGroupByOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 8195 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selGroupByOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8201 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selGroupByOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8207 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selGroupByOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8213 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selHavingOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8219 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selHavingOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8225 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selHavingOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8231 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOrderByOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8237 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOrderByOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8243 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOrderByOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8249 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selLimitOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 8255 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selLimitOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8261 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selLimitOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8267 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selLimitOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8273 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOffsetOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 8279 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOffsetOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8285 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOffsetOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8291 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOffsetOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8297 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _selSelectListIannotatedTree,_selSelectListIcolExprs,_selSelectListIoriginalTree,_selSelectListIupEnv,_selSelectListIupType) =
                  selSelectList_ _selSelectListOassignmentCastContext _selSelectListOcat _selSelectListOdownEnv _selSelectListOexpectedCast _selSelectListOexpectedType _selSelectListOflags _selSelectListOimCast
              ( _selTrefIannotatedTree,_selTrefIoriginalTree,_selTrefIupEnv) =
                  selTref_ _selTrefOcat _selTrefOflags _selTrefOimCast
              ( _selWhereIannotatedTree,_selWhereIoriginalTree) =
                  selWhere_ _selWhereOcat _selWhereOdownEnv _selWhereOflags _selWhereOimCast
              ( _selGroupByIannotatedTree,_selGroupByIoriginalTree,_selGroupByIupTypes) =
                  selGroupBy_ _selGroupByOassignmentCastContext _selGroupByOcat _selGroupByOdownEnv _selGroupByOexpectedCast _selGroupByOexpectedTypes _selGroupByOflags _selGroupByOimCast
              ( _selHavingIannotatedTree,_selHavingIoriginalTree) =
                  selHaving_ _selHavingOcat _selHavingOdownEnv _selHavingOflags _selHavingOimCast
              ( _selOrderByIannotatedTree,_selOrderByIoriginalTree) =
                  selOrderBy_ _selOrderByOcat _selOrderByOdownEnv _selOrderByOflags _selOrderByOimCast
              ( _selLimitIannotatedTree,_selLimitIoriginalTree,_selLimitIupType) =
                  selLimit_ _selLimitOassignmentCastContext _selLimitOcat _selLimitOdownEnv _selLimitOexpectedCast _selLimitOexpectedType _selLimitOflags _selLimitOimCast
              ( _selOffsetIannotatedTree,_selOffsetIoriginalTree,_selOffsetIupType) =
                  selOffset_ _selOffsetOassignmentCastContext _selOffsetOcat _selOffsetOdownEnv _selOffsetOexpectedCast _selOffsetOexpectedType _selOffsetOflags _selOffsetOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupType)))
_sem_QueryExpr_CombineQueryExpr :: T_Annotation ->
                                  CombineType ->
                                  T_QueryExpr ->
                                  T_QueryExpr ->
                                  T_QueryExpr
_sem_QueryExpr_CombineQueryExpr ann_ cqType_ cqQe0_ cqQe1_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIouterDownEnv ->
         (let _tpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe [(Text,TypeExtra)])
              _tpee :: (Either [TypeError] [(Text,TypeExtra)])
              _lhsOannotatedTree :: QueryExpr
              _lhsOoriginalTree :: QueryExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _cqQe0OassignmentCastContext :: Bool
              _cqQe0Ocat :: Catalog
              _cqQe0OexpectedType :: (Maybe [TypeExtra])
              _cqQe0Oflags :: TypeCheckFlags
              _cqQe0OimCast :: (Maybe TypeExtra)
              _cqQe0OouterDownEnv :: (Maybe Environment)
              _cqQe1OassignmentCastContext :: Bool
              _cqQe1Ocat :: Catalog
              _cqQe1OexpectedType :: (Maybe [TypeExtra])
              _cqQe1Oflags :: TypeCheckFlags
              _cqQe1OimCast :: (Maybe TypeExtra)
              _cqQe1OouterDownEnv :: (Maybe Environment)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _cqQe0IannotatedTree :: QueryExpr
              _cqQe0IoriginalTree :: QueryExpr
              _cqQe0IupType :: (Maybe [(Text,TypeExtra)])
              _cqQe1IannotatedTree :: QueryExpr
              _cqQe1IoriginalTree :: QueryExpr
              _cqQe1IupType :: (Maybe [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 142, column 9)
              _tpe =
                  ({-# LINE 142 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   liftM (mkTypeExtra . CompositeType) _tpee
                   {-# LINE 8363 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 145, column 9)
              _lhsOupType =
                  ({-# LINE 145 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   either (const Nothing) Just _tpee
                   {-# LINE 8369 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 156, column 9)
              _tpee =
                  ({-# LINE 156 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   do
                   a <- maybe (Left []) Right _cqQe0IupType
                   b <- maybe (Left []) Right _cqQe1IupType
                   unless (length a == length b) $ Left [IncompatibleUnionTypes (CompositeType a) (CompositeType b)]
                   let uts = zipWithM (\(_,te1) (_,te2) -> resolveResultSetTypeExtra _lhsIcat [te1,te2])
                                 a b
                   case uts of
                     Left{} -> Left [IncompatibleUnionTypes (CompositeType a) (CompositeType b)]
                     Right uts' -> return $ zipWith (\(n,_) te -> (n,te)) a uts'
                   {-# LINE 8383 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CombineQueryExpr _annIannotatedTree cqType_ _cqQe0IannotatedTree _cqQe1IannotatedTree
                   {-# LINE 8389 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CombineQueryExpr _annIoriginalTree cqType_ _cqQe0IoriginalTree _cqQe1IoriginalTree
                   {-# LINE 8395 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 8401 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 8407 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8413 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8419 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8425 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (from local)
              _annOtpe =
                  ({-# LINE 126 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _tpe
                   {-# LINE 8431 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _cqQe0OassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 8437 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _cqQe0Ocat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8443 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _cqQe0OexpectedType =
                  ({-# LINE 18 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIexpectedType
                   {-# LINE 8449 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _cqQe0Oflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8455 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _cqQe0OimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8461 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _cqQe0OouterDownEnv =
                  ({-# LINE 89 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIouterDownEnv
                   {-# LINE 8467 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _cqQe1OassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 8473 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _cqQe1Ocat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8479 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _cqQe1OexpectedType =
                  ({-# LINE 18 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIexpectedType
                   {-# LINE 8485 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _cqQe1Oflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8491 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _cqQe1OimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8497 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _cqQe1OouterDownEnv =
                  ({-# LINE 89 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIouterDownEnv
                   {-# LINE 8503 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _cqQe0IannotatedTree,_cqQe0IoriginalTree,_cqQe0IupType) =
                  cqQe0_ _cqQe0OassignmentCastContext _cqQe0Ocat _cqQe0OexpectedType _cqQe0Oflags _cqQe0OimCast _cqQe0OouterDownEnv
              ( _cqQe1IannotatedTree,_cqQe1IoriginalTree,_cqQe1IupType) =
                  cqQe1_ _cqQe1OassignmentCastContext _cqQe1Ocat _cqQe1OexpectedType _cqQe1Oflags _cqQe1OimCast _cqQe1OouterDownEnv
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupType)))
_sem_QueryExpr_Values :: T_Annotation ->
                        T_ScalarExprListList ->
                        T_QueryExpr
_sem_QueryExpr_Values ann_ qeValues_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIouterDownEnv ->
         (let _qeValuesOdownEnv :: Environment
              _tpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe [(Text,TypeExtra)])
              _tpee :: (Either [TypeError] [(Text,TypeExtra)])
              _qeValuesOexpectedCast :: Bool
              _lhsOannotatedTree :: QueryExpr
              _lhsOoriginalTree :: QueryExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _qeValuesOassignmentCastContext :: Bool
              _qeValuesOcat :: Catalog
              _qeValuesOexpectedType :: (Maybe [TypeExtra])
              _qeValuesOflags :: TypeCheckFlags
              _qeValuesOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _qeValuesIannotatedTree :: ScalarExprListList
              _qeValuesIoriginalTree :: ScalarExprListList
              _qeValuesIupType :: (Either [TypeError] [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 80, column 24)
              _qeValuesOdownEnv =
                  ({-# LINE 80 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 8547 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 142, column 9)
              _tpe =
                  ({-# LINE 142 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   liftM (mkTypeExtra . CompositeType) _tpee
                   {-# LINE 8553 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 145, column 9)
              _lhsOupType =
                  ({-# LINE 145 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   either (const Nothing) Just _tpee
                   {-# LINE 8559 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 153, column 9)
              _tpee =
                  ({-# LINE 153 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _qeValuesIupType
                   {-# LINE 8565 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 154, column 9)
              _qeValuesOexpectedCast =
                  ({-# LINE 154 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   True
                   {-# LINE 8571 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Values _annIannotatedTree _qeValuesIannotatedTree
                   {-# LINE 8577 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Values _annIoriginalTree _qeValuesIoriginalTree
                   {-# LINE 8583 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 8589 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 8595 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8601 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8607 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8613 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (from local)
              _annOtpe =
                  ({-# LINE 126 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _tpe
                   {-# LINE 8619 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _qeValuesOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 8625 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _qeValuesOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8631 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _qeValuesOexpectedType =
                  ({-# LINE 186 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIexpectedType
                   {-# LINE 8637 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _qeValuesOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8643 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _qeValuesOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8649 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _qeValuesIannotatedTree,_qeValuesIoriginalTree,_qeValuesIupType) =
                  qeValues_ _qeValuesOassignmentCastContext _qeValuesOcat _qeValuesOdownEnv _qeValuesOexpectedCast _qeValuesOexpectedType _qeValuesOflags _qeValuesOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupType)))
_sem_QueryExpr_WithQueryExpr :: T_Annotation ->
                               T_WithQueryList ->
                               T_QueryExpr ->
                               T_QueryExpr
_sem_QueryExpr_WithQueryExpr ann_ withs_ withQe_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIouterDownEnv ->
         (let _withQeOcat :: Catalog
              _withsOcatExtIncomp :: (Either [TypeError] Catalog)
              _lhsOannotatedTree :: QueryExpr
              _tpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe [(Text,TypeExtra)])
              _tpee :: (Either [TypeError] [(Text,TypeExtra)])
              _lhsOoriginalTree :: QueryExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _withsOcat :: Catalog
              _withsOflags :: TypeCheckFlags
              _withsOimCast :: (Maybe TypeExtra)
              _withQeOassignmentCastContext :: Bool
              _withQeOexpectedType :: (Maybe [TypeExtra])
              _withQeOflags :: TypeCheckFlags
              _withQeOimCast :: (Maybe TypeExtra)
              _withQeOouterDownEnv :: (Maybe Environment)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _withsIannotatedTree :: WithQueryList
              _withsIcatExtComp :: (Either [TypeError] Catalog)
              _withsIoriginalTree :: WithQueryList
              _withQeIannotatedTree :: QueryExpr
              _withQeIoriginalTree :: QueryExpr
              _withQeIupType :: (Maybe [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 70, column 8)
              _withQeOcat =
                  ({-# LINE 70 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   case _withsIcatExtComp of
                     Right catExtComp -> catExtComp
                     Left _ -> _lhsIcat
                   {-# LINE 8700 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 74, column 8)
              _withsOcatExtIncomp =
                  ({-# LINE 74 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   return _lhsIcat
                   {-# LINE 8706 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 76, column 8)
              _lhsOannotatedTree =
                  ({-# LINE 76 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   case _withsIcatExtComp of
                     Right _ -> WithQueryExpr (_annIannotatedTree) (_withsIannotatedTree) (_withQeIannotatedTree)
                     Left tyErrs -> WithQueryExpr (emptyAnnotation { anType = Nothing, anErrs = tyErrs })
                       (_withsIannotatedTree) (_withQeIannotatedTree)
                   {-# LINE 8715 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 142, column 9)
              _tpe =
                  ({-# LINE 142 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   liftM (mkTypeExtra . CompositeType) _tpee
                   {-# LINE 8721 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 145, column 9)
              _lhsOupType =
                  ({-# LINE 145 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   either (const Nothing) Just _tpee
                   {-# LINE 8727 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 151, column 9)
              _tpee =
                  ({-# LINE 151 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   maybe (Left []) Right _withQeIupType
                   {-# LINE 8733 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   WithQueryExpr _annIannotatedTree _withsIannotatedTree _withQeIannotatedTree
                   {-# LINE 8739 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   WithQueryExpr _annIoriginalTree _withsIoriginalTree _withQeIoriginalTree
                   {-# LINE 8745 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 8751 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8757 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8763 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8769 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (from local)
              _annOtpe =
                  ({-# LINE 126 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _tpe
                   {-# LINE 8775 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _withsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8781 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _withsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8787 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _withsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8793 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _withQeOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 8799 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _withQeOexpectedType =
                  ({-# LINE 18 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIexpectedType
                   {-# LINE 8805 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _withQeOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8811 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _withQeOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 8817 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _withQeOouterDownEnv =
                  ({-# LINE 89 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIouterDownEnv
                   {-# LINE 8823 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _withsIannotatedTree,_withsIcatExtComp,_withsIoriginalTree) =
                  withs_ _withsOcat _withsOcatExtIncomp _withsOflags _withsOimCast
              ( _withQeIannotatedTree,_withQeIoriginalTree,_withQeIupType) =
                  withQe_ _withQeOassignmentCastContext _withQeOcat _withQeOexpectedType _withQeOflags _withQeOimCast _withQeOouterDownEnv
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupType)))
-- Root --------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
      synthesized attributes:
         annotatedTree        : Root 
         originalTree         : Root 
   alternatives:
      alternative Root:
         child statements     : StatementList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data Root = Root (StatementList)
          deriving ( Show)
-- cata
_sem_Root :: Root ->
            T_Root
_sem_Root (Root _statements) =
    (_sem_Root_Root (_sem_StatementList _statements))
-- semantic domain
type T_Root = Catalog ->
              TypeCheckFlags ->
              ( Root,Root)
data Inh_Root = Inh_Root {_cat_Inh_Root :: Catalog,_flags_Inh_Root :: TypeCheckFlags}
data Syn_Root = Syn_Root {_annotatedTree_Syn_Root :: Root,_originalTree_Syn_Root :: Root}
_wrap_Root :: T_Root ->
             Inh_Root ->
             Syn_Root
_wrap_Root sem (Inh_Root _lhsIcat _lhsIflags) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags
     in  (Syn_Root _lhsOannotatedTree _lhsOoriginalTree))
_sem_Root_Root :: T_StatementList ->
                 T_Root
_sem_Root_Root statements_ =
    (\ _lhsIcat
       _lhsIflags ->
         (let _statementsOimCast :: (Maybe TypeExtra)
              _lhsOannotatedTree :: Root
              _lhsOoriginalTree :: Root
              _statementsOcat :: Catalog
              _statementsOflags :: TypeCheckFlags
              _statementsIannotatedTree :: StatementList
              _statementsIoriginalTree :: StatementList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag"(line 133, column 8)
              _statementsOimCast =
                  ({-# LINE 133 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Nothing
                   {-# LINE 8883 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Root _statementsIannotatedTree
                   {-# LINE 8889 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Root _statementsIoriginalTree
                   {-# LINE 8895 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 8901 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 8907 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _statementsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 8913 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _statementsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 8919 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _statementsIannotatedTree,_statementsIoriginalTree) =
                  statements_ _statementsOcat _statementsOflags _statementsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- RowConstraint -----------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : RowConstraint 
         originalTree         : RowConstraint 
   alternatives:
      alternative NullConstraint:
         child ann            : Annotation 
         child name           : {String}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative NotNullConstraint:
         child ann            : Annotation 
         child name           : {String}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative IdentityConstraint:
         child ann            : Annotation 
         child name           : {String}
         child seedAndInc     : {(Maybe (Integer,Integer))}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative RowCheckConstraint:
         child ann            : Annotation 
         child name           : {String}
         child expr           : ScalarExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative RowUniqueConstraint:
         child ann            : Annotation 
         child name           : {String}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative RowPrimaryKeyConstraint:
         child ann            : Annotation 
         child name           : {String}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative RowReferenceConstraint:
         child ann            : Annotation 
         child name           : {String}
         child table          : Name 
         child att            : {Maybe NameComponent}
         child onUpdate       : {Cascade}
         child onDelete       : {Cascade}
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data RowConstraint = NullConstraint (Annotation) (String)
                   | NotNullConstraint (Annotation) (String)
                   | IdentityConstraint (Annotation) (String) (((Maybe (Integer,Integer))))
                   | RowCheckConstraint (Annotation) (String) (ScalarExpr)
                   | RowUniqueConstraint (Annotation) (String)
                   | RowPrimaryKeyConstraint (Annotation) (String)
                   | RowReferenceConstraint (Annotation) (String) (Name) ((Maybe NameComponent)) (Cascade) (Cascade)
                   deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_RowConstraint :: RowConstraint ->
                     T_RowConstraint
_sem_RowConstraint (NullConstraint _ann _name) =
    (_sem_RowConstraint_NullConstraint (_sem_Annotation _ann) _name)
_sem_RowConstraint (NotNullConstraint _ann _name) =
    (_sem_RowConstraint_NotNullConstraint (_sem_Annotation _ann) _name)
_sem_RowConstraint (IdentityConstraint _ann _name _seedAndInc) =
    (_sem_RowConstraint_IdentityConstraint (_sem_Annotation _ann) _name _seedAndInc)
_sem_RowConstraint (RowCheckConstraint _ann _name _expr) =
    (_sem_RowConstraint_RowCheckConstraint (_sem_Annotation _ann) _name (_sem_ScalarExpr _expr))
_sem_RowConstraint (RowUniqueConstraint _ann _name) =
    (_sem_RowConstraint_RowUniqueConstraint (_sem_Annotation _ann) _name)
_sem_RowConstraint (RowPrimaryKeyConstraint _ann _name) =
    (_sem_RowConstraint_RowPrimaryKeyConstraint (_sem_Annotation _ann) _name)
_sem_RowConstraint (RowReferenceConstraint _ann _name _table _att _onUpdate _onDelete) =
    (_sem_RowConstraint_RowReferenceConstraint (_sem_Annotation _ann) _name (_sem_Name _table) _att _onUpdate _onDelete)
-- semantic domain
type T_RowConstraint = Catalog ->
                       TypeCheckFlags ->
                       (Maybe TypeExtra) ->
                       ( RowConstraint,RowConstraint)
data Inh_RowConstraint = Inh_RowConstraint {_cat_Inh_RowConstraint :: Catalog,_flags_Inh_RowConstraint :: TypeCheckFlags,_imCast_Inh_RowConstraint :: (Maybe TypeExtra)}
data Syn_RowConstraint = Syn_RowConstraint {_annotatedTree_Syn_RowConstraint :: RowConstraint,_originalTree_Syn_RowConstraint :: RowConstraint}
_wrap_RowConstraint :: T_RowConstraint ->
                      Inh_RowConstraint ->
                      Syn_RowConstraint
_wrap_RowConstraint sem (Inh_RowConstraint _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_RowConstraint _lhsOannotatedTree _lhsOoriginalTree))
_sem_RowConstraint_NullConstraint :: T_Annotation ->
                                    String ->
                                    T_RowConstraint
_sem_RowConstraint_NullConstraint ann_ name_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: RowConstraint
              _lhsOoriginalTree :: RowConstraint
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 83, column 36)
              _annOtpe =
                  ({-# LINE 83 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 9041 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   NullConstraint _annIannotatedTree name_
                   {-# LINE 9047 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   NullConstraint _annIoriginalTree name_
                   {-# LINE 9053 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 9059 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 9065 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 9071 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 9077 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 9083 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_RowConstraint_NotNullConstraint :: T_Annotation ->
                                       String ->
                                       T_RowConstraint
_sem_RowConstraint_NotNullConstraint ann_ name_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: RowConstraint
              _lhsOoriginalTree :: RowConstraint
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 82, column 39)
              _annOtpe =
                  ({-# LINE 82 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 9107 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   NotNullConstraint _annIannotatedTree name_
                   {-# LINE 9113 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   NotNullConstraint _annIoriginalTree name_
                   {-# LINE 9119 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 9125 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 9131 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 9137 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 9143 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 9149 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_RowConstraint_IdentityConstraint :: T_Annotation ->
                                        String ->
                                        ((Maybe (Integer,Integer))) ->
                                        T_RowConstraint
_sem_RowConstraint_IdentityConstraint ann_ name_ seedAndInc_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: RowConstraint
              _lhsOoriginalTree :: RowConstraint
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 81, column 40)
              _annOtpe =
                  ({-# LINE 81 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 9174 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   IdentityConstraint _annIannotatedTree name_ seedAndInc_
                   {-# LINE 9180 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   IdentityConstraint _annIoriginalTree name_ seedAndInc_
                   {-# LINE 9186 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 9192 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 9198 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 9204 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 9210 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 9216 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_RowConstraint_RowCheckConstraint :: T_Annotation ->
                                        String ->
                                        T_ScalarExpr ->
                                        T_RowConstraint
_sem_RowConstraint_RowCheckConstraint ann_ name_ expr_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _exprOdownEnv :: Environment
              _exprOexpectedCast :: Bool
              _exprOexpectedType :: (Maybe TypeExtra)
              _exprOodbcFunction :: Bool
              _exprOassignmentCastContext :: Bool
              _lhsOannotatedTree :: RowConstraint
              _lhsOoriginalTree :: RowConstraint
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _exprOcat :: Catalog
              _exprOflags :: TypeCheckFlags
              _exprOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exprIannotatedTree :: ScalarExpr
              _exprIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exprIoriginalTree :: ScalarExpr
              _exprIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 84, column 40)
              _annOtpe =
                  ({-# LINE 84 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 9253 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 85, column 40)
              _exprOdownEnv =
                  ({-# LINE 85 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 9259 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 86, column 40)
              _exprOexpectedCast =
                  ({-# LINE 86 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 9265 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 87, column 40)
              _exprOexpectedType =
                  ({-# LINE 87 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 9271 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 149, column 26)
              _exprOodbcFunction =
                  ({-# LINE 149 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 9277 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 816, column 40)
              _exprOassignmentCastContext =
                  ({-# LINE 816 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 9283 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   RowCheckConstraint _annIannotatedTree name_ _exprIannotatedTree
                   {-# LINE 9289 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   RowCheckConstraint _annIoriginalTree name_ _exprIoriginalTree
                   {-# LINE 9295 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 9301 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 9307 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 9313 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 9319 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 9325 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 9331 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 9337 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 9343 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exprIannotatedTree,_exprIcolExprs,_exprIoriginalTree,_exprIupType) =
                  expr_ _exprOassignmentCastContext _exprOcat _exprOdownEnv _exprOexpectedCast _exprOexpectedType _exprOflags _exprOimCast _exprOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_RowConstraint_RowUniqueConstraint :: T_Annotation ->
                                         String ->
                                         T_RowConstraint
_sem_RowConstraint_RowUniqueConstraint ann_ name_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: RowConstraint
              _lhsOoriginalTree :: RowConstraint
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 91, column 41)
              _annOtpe =
                  ({-# LINE 91 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 9369 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   RowUniqueConstraint _annIannotatedTree name_
                   {-# LINE 9375 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   RowUniqueConstraint _annIoriginalTree name_
                   {-# LINE 9381 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 9387 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 9393 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 9399 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 9405 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 9411 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_RowConstraint_RowPrimaryKeyConstraint :: T_Annotation ->
                                             String ->
                                             T_RowConstraint
_sem_RowConstraint_RowPrimaryKeyConstraint ann_ name_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: RowConstraint
              _lhsOoriginalTree :: RowConstraint
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 88, column 45)
              _annOtpe =
                  ({-# LINE 88 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 9435 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   RowPrimaryKeyConstraint _annIannotatedTree name_
                   {-# LINE 9441 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   RowPrimaryKeyConstraint _annIoriginalTree name_
                   {-# LINE 9447 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 9453 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 9459 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 9465 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 9471 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 9477 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_RowConstraint_RowReferenceConstraint :: T_Annotation ->
                                            String ->
                                            T_Name ->
                                            (Maybe NameComponent) ->
                                            Cascade ->
                                            Cascade ->
                                            T_RowConstraint
_sem_RowConstraint_RowReferenceConstraint ann_ name_ table_ att_ onUpdate_ onDelete_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _tableOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: RowConstraint
              _lhsOoriginalTree :: RowConstraint
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _tableOcat :: Catalog
              _tableOflags :: TypeCheckFlags
              _tableOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _tableIannotatedTree :: Name
              _tableIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 89, column 44)
              _annOtpe =
                  ({-# LINE 89 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 9511 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 90, column 44)
              _tableOtpe =
                  ({-# LINE 90 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 9517 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   RowReferenceConstraint _annIannotatedTree name_ _tableIannotatedTree att_ onUpdate_ onDelete_
                   {-# LINE 9523 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   RowReferenceConstraint _annIoriginalTree name_ _tableIoriginalTree att_ onUpdate_ onDelete_
                   {-# LINE 9529 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 9535 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 9541 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 9547 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 9553 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 9559 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 9565 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 9571 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 9577 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _tableIannotatedTree,_tableIoriginalTree) =
                  table_ _tableOcat _tableOflags _tableOimCast _tableOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- RowConstraintList -------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : RowConstraintList 
         originalTree         : RowConstraintList 
   alternatives:
      alternative Cons:
         child hd             : RowConstraint 
         child tl             : RowConstraintList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type RowConstraintList = [RowConstraint]
-- cata
_sem_RowConstraintList :: RowConstraintList ->
                         T_RowConstraintList
_sem_RowConstraintList list =
    (Prelude.foldr _sem_RowConstraintList_Cons _sem_RowConstraintList_Nil (Prelude.map _sem_RowConstraint list))
-- semantic domain
type T_RowConstraintList = Catalog ->
                           TypeCheckFlags ->
                           (Maybe TypeExtra) ->
                           ( RowConstraintList,RowConstraintList)
data Inh_RowConstraintList = Inh_RowConstraintList {_cat_Inh_RowConstraintList :: Catalog,_flags_Inh_RowConstraintList :: TypeCheckFlags,_imCast_Inh_RowConstraintList :: (Maybe TypeExtra)}
data Syn_RowConstraintList = Syn_RowConstraintList {_annotatedTree_Syn_RowConstraintList :: RowConstraintList,_originalTree_Syn_RowConstraintList :: RowConstraintList}
_wrap_RowConstraintList :: T_RowConstraintList ->
                          Inh_RowConstraintList ->
                          Syn_RowConstraintList
_wrap_RowConstraintList sem (Inh_RowConstraintList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_RowConstraintList _lhsOannotatedTree _lhsOoriginalTree))
_sem_RowConstraintList_Cons :: T_RowConstraint ->
                              T_RowConstraintList ->
                              T_RowConstraintList
_sem_RowConstraintList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: RowConstraintList
              _lhsOoriginalTree :: RowConstraintList
              _hdOcat :: Catalog
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: RowConstraint
              _hdIoriginalTree :: RowConstraint
              _tlIannotatedTree :: RowConstraintList
              _tlIoriginalTree :: RowConstraintList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 9648 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 9654 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 9660 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 9666 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 9672 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 9678 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 9684 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 9690 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 9696 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 9702 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree) =
                  hd_ _hdOcat _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_RowConstraintList_Nil :: T_RowConstraintList
_sem_RowConstraintList_Nil =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: RowConstraintList
              _lhsOoriginalTree :: RowConstraintList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 9720 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 9726 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 9732 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 9738 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- ScalarExpr --------------------------------------------------
{-
   visit 0:
      inherited attributes:
         assignmentCastContext : Bool
         cat                  : Catalog
         downEnv              : Environment
         expectedCast         : Bool
         expectedType         : Maybe TypeExtra
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
         odbcFunction         : Bool
      synthesized attributes:
         annotatedTree        : ScalarExpr 
         colExprs             : [(NameComponent,Maybe TypeExtra,ScalarExpr)]
         originalTree         : ScalarExpr 
         upType               : Maybe TypeExtra
   alternatives:
      alternative NumberLit:
         child ann            : Annotation 
         child d              : {String}
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local digChars    : _
            local annotatedTree : _
            local originalTree : _
      alternative StringLit:
         child ann            : Annotation 
         child value          : {String}
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative NullLit:
         child ann            : Annotation 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative BooleanLit:
         child ann            : Annotation 
         child b              : {Bool}
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative TypedStringLit:
         child ann            : Annotation 
         child tn             : TypeName 
         child value          : {String}
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative Interval:
         child ann            : Annotation 
         child value          : {String}
         child field          : {IntervalField}
         child prec           : {Maybe Int}
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative Identifier:
         child ann            : Annotation 
         child i              : Name 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local elkp        : _
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative Star:
         child ann            : Annotation 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : {Either [TypeError] TypeExtra}
            local starCS      : _
            local annotatedTree : _
            local originalTree : _
      alternative QStar:
         child ann            : Annotation 
         child q              : {NameComponent}
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : {Either [TypeError] TypeExtra}
            local starCS      : _
            local annotatedTree : _
            local originalTree : _
      alternative PositionalArg:
         child ann            : Annotation 
         child p              : {Integer}
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative Placeholder:
         child ann            : Annotation 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative PrefixOp:
         child ann            : Annotation 
         child opName         : Name 
         child arg            : ScalarExpr 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : {Either [TypeError] TypeExtra}
            local ttpe        : {Either [TypeError] ([TypeExtra],TypeExtra)}
            local annotatedTree : _
            local originalTree : _
      alternative PostfixOp:
         child ann            : Annotation 
         child opName         : Name 
         child arg            : ScalarExpr 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : {Either [TypeError] TypeExtra}
            local ttpe        : {Either [TypeError] ([TypeExtra],TypeExtra)}
            local annotatedTree : _
            local originalTree : _
      alternative BinaryOp:
         child ann            : Annotation 
         child opName         : Name 
         child arg0           : ScalarExpr 
         child arg1           : ScalarExpr 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : {Either [TypeError] TypeExtra}
            local ttpe        : {Either [TypeError] ([TypeExtra],TypeExtra)}
            local annotatedTree : _
            local originalTree : _
      alternative SpecialOp:
         child ann            : Annotation 
         child opName         : Name 
         child args           : ScalarExprList 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : {Either [TypeError] TypeExtra}
            local ttpe        : {Either [TypeError] ([TypeExtra],TypeExtra)}
            local annotatedTree : _
            local originalTree : _
      alternative Extract:
         child ann            : Annotation 
         child field          : {ExtractField}
         child e              : ScalarExpr 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative App:
         child ann            : Annotation 
         child funName        : Name 
         child args           : ScalarExprList 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : {Either [TypeError] TypeExtra}
            local funName     : _
            local ttpe        : {Either [TypeError] ([TypeExtra],TypeExtra)}
            local annotatedTree : _
            local originalTree : _
      alternative AggregateApp:
         child ann            : Annotation 
         child aggDistinct    : {Distinct}
         child fn             : ScalarExpr 
         child orderBy        : ScalarExprDirectionPairList 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative WindowApp:
         child ann            : Annotation 
         child fn             : ScalarExpr 
         child partitionBy    : ScalarExprList 
         child orderBy        : ScalarExprDirectionPairList 
         child frm            : {Maybe FrameClause}
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative Cast:
         child ann            : Annotation 
         child expr           : ScalarExpr 
         child tn             : TypeName 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative ImplicitCast:
         child ann            : Annotation 
         child expr           : ScalarExpr 
         child te             : {TypeExtra}
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative Case:
         child ann            : Annotation 
         child cases          : CaseScalarExprListScalarExprPairList 
         child els            : MaybeScalarExpr 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local whenTypes   : _
            local thenTypes   : _
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative CaseSimple:
         child ann            : Annotation 
         child value          : ScalarExpr 
         child cases          : CaseScalarExprListScalarExprPairList 
         child els            : MaybeScalarExpr 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local whenTypes   : _
            local thenTypes   : _
            local whent       : _
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative Parens:
         child ann            : Annotation 
         child ex             : ScalarExpr 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative InPredicate:
         child ann            : Annotation 
         child expr           : ScalarExpr 
         child i              : {Bool}
         child list           : InList 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local rt          : {Either [TypeError] TypeExtra}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative Exists:
         child ann            : Annotation 
         child sel            : QueryExpr 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative ScalarSubQuery:
         child ann            : Annotation 
         child sel            : QueryExpr 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative LiftApp:
         child ann            : Annotation 
         child oper           : Name 
         child flav           : {LiftFlavour}
         child args           : ScalarExprList 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative OdbcLiteral:
         child ann            : Annotation 
         child olt            : {OdbcLiteralType}
         child val            : {String}
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative OdbcFunc:
         child ann            : Annotation 
         child ex             : ScalarExpr 
         visit 0:
            local upType      : _
            local dialectTypeName : {Text -> Either [TypeError] Text}
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
      alternative AntiScalarExpr:
         child string         : {String}
         visit 0:
            local tpe         : _
            local annotatedTree : _
            local originalTree : _
-}
data ScalarExpr = NumberLit (Annotation) (String)
                | StringLit (Annotation) (String)
                | NullLit (Annotation)
                | BooleanLit (Annotation) (Bool)
                | TypedStringLit (Annotation) (TypeName) (String)
                | Interval (Annotation) (String) (IntervalField) ((Maybe Int))
                | Identifier (Annotation) (Name)
                | Star (Annotation)
                | QStar (Annotation) (NameComponent)
                | PositionalArg (Annotation) (Integer)
                | Placeholder (Annotation)
                | PrefixOp (Annotation) (Name) (ScalarExpr)
                | PostfixOp (Annotation) (Name) (ScalarExpr)
                | BinaryOp (Annotation) (Name) (ScalarExpr) (ScalarExpr)
                | SpecialOp (Annotation) (Name) (ScalarExprList)
                | Extract (Annotation) (ExtractField) (ScalarExpr)
                | App (Annotation) (Name) (ScalarExprList)
                | AggregateApp (Annotation) (Distinct) (ScalarExpr) (ScalarExprDirectionPairList)
                | WindowApp (Annotation) (ScalarExpr) (ScalarExprList) (ScalarExprDirectionPairList) ((Maybe FrameClause))
                | Cast (Annotation) (ScalarExpr) (TypeName)
                | ImplicitCast (Annotation) (ScalarExpr) (TypeExtra)
                | Case (Annotation) (CaseScalarExprListScalarExprPairList) (MaybeScalarExpr)
                | CaseSimple (Annotation) (ScalarExpr) (CaseScalarExprListScalarExprPairList) (MaybeScalarExpr)
                | Parens (Annotation) (ScalarExpr)
                | InPredicate (Annotation) (ScalarExpr) (Bool) (InList)
                | Exists (Annotation) (QueryExpr)
                | ScalarSubQuery (Annotation) (QueryExpr)
                | LiftApp (Annotation) (Name) (LiftFlavour) (ScalarExprList)
                | OdbcLiteral (Annotation) (OdbcLiteralType) (String)
                | OdbcFunc (Annotation) (ScalarExpr)
                | AntiScalarExpr (String)
                deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_ScalarExpr :: ScalarExpr ->
                  T_ScalarExpr
_sem_ScalarExpr (NumberLit _ann _d) =
    (_sem_ScalarExpr_NumberLit (_sem_Annotation _ann) _d)
_sem_ScalarExpr (StringLit _ann _value) =
    (_sem_ScalarExpr_StringLit (_sem_Annotation _ann) _value)
_sem_ScalarExpr (NullLit _ann) =
    (_sem_ScalarExpr_NullLit (_sem_Annotation _ann))
_sem_ScalarExpr (BooleanLit _ann _b) =
    (_sem_ScalarExpr_BooleanLit (_sem_Annotation _ann) _b)
_sem_ScalarExpr (TypedStringLit _ann _tn _value) =
    (_sem_ScalarExpr_TypedStringLit (_sem_Annotation _ann) (_sem_TypeName _tn) _value)
_sem_ScalarExpr (Interval _ann _value _field _prec) =
    (_sem_ScalarExpr_Interval (_sem_Annotation _ann) _value _field _prec)
_sem_ScalarExpr (Identifier _ann _i) =
    (_sem_ScalarExpr_Identifier (_sem_Annotation _ann) (_sem_Name _i))
_sem_ScalarExpr (Star _ann) =
    (_sem_ScalarExpr_Star (_sem_Annotation _ann))
_sem_ScalarExpr (QStar _ann _q) =
    (_sem_ScalarExpr_QStar (_sem_Annotation _ann) _q)
_sem_ScalarExpr (PositionalArg _ann _p) =
    (_sem_ScalarExpr_PositionalArg (_sem_Annotation _ann) _p)
_sem_ScalarExpr (Placeholder _ann) =
    (_sem_ScalarExpr_Placeholder (_sem_Annotation _ann))
_sem_ScalarExpr (PrefixOp _ann _opName _arg) =
    (_sem_ScalarExpr_PrefixOp (_sem_Annotation _ann) (_sem_Name _opName) (_sem_ScalarExpr _arg))
_sem_ScalarExpr (PostfixOp _ann _opName _arg) =
    (_sem_ScalarExpr_PostfixOp (_sem_Annotation _ann) (_sem_Name _opName) (_sem_ScalarExpr _arg))
_sem_ScalarExpr (BinaryOp _ann _opName _arg0 _arg1) =
    (_sem_ScalarExpr_BinaryOp (_sem_Annotation _ann) (_sem_Name _opName) (_sem_ScalarExpr _arg0) (_sem_ScalarExpr _arg1))
_sem_ScalarExpr (SpecialOp _ann _opName _args) =
    (_sem_ScalarExpr_SpecialOp (_sem_Annotation _ann) (_sem_Name _opName) (_sem_ScalarExprList _args))
_sem_ScalarExpr (Extract _ann _field _e) =
    (_sem_ScalarExpr_Extract (_sem_Annotation _ann) _field (_sem_ScalarExpr _e))
_sem_ScalarExpr (App _ann _funName _args) =
    (_sem_ScalarExpr_App (_sem_Annotation _ann) (_sem_Name _funName) (_sem_ScalarExprList _args))
_sem_ScalarExpr (AggregateApp _ann _aggDistinct _fn _orderBy) =
    (_sem_ScalarExpr_AggregateApp (_sem_Annotation _ann) _aggDistinct (_sem_ScalarExpr _fn) (_sem_ScalarExprDirectionPairList _orderBy))
_sem_ScalarExpr (WindowApp _ann _fn _partitionBy _orderBy _frm) =
    (_sem_ScalarExpr_WindowApp (_sem_Annotation _ann) (_sem_ScalarExpr _fn) (_sem_ScalarExprList _partitionBy) (_sem_ScalarExprDirectionPairList _orderBy) _frm)
_sem_ScalarExpr (Cast _ann _expr _tn) =
    (_sem_ScalarExpr_Cast (_sem_Annotation _ann) (_sem_ScalarExpr _expr) (_sem_TypeName _tn))
_sem_ScalarExpr (ImplicitCast _ann _expr _te) =
    (_sem_ScalarExpr_ImplicitCast (_sem_Annotation _ann) (_sem_ScalarExpr _expr) _te)
_sem_ScalarExpr (Case _ann _cases _els) =
    (_sem_ScalarExpr_Case (_sem_Annotation _ann) (_sem_CaseScalarExprListScalarExprPairList _cases) (_sem_MaybeScalarExpr _els))
_sem_ScalarExpr (CaseSimple _ann _value _cases _els) =
    (_sem_ScalarExpr_CaseSimple (_sem_Annotation _ann) (_sem_ScalarExpr _value) (_sem_CaseScalarExprListScalarExprPairList _cases) (_sem_MaybeScalarExpr _els))
_sem_ScalarExpr (Parens _ann _ex) =
    (_sem_ScalarExpr_Parens (_sem_Annotation _ann) (_sem_ScalarExpr _ex))
_sem_ScalarExpr (InPredicate _ann _expr _i _list) =
    (_sem_ScalarExpr_InPredicate (_sem_Annotation _ann) (_sem_ScalarExpr _expr) _i (_sem_InList _list))
_sem_ScalarExpr (Exists _ann _sel) =
    (_sem_ScalarExpr_Exists (_sem_Annotation _ann) (_sem_QueryExpr _sel))
_sem_ScalarExpr (ScalarSubQuery _ann _sel) =
    (_sem_ScalarExpr_ScalarSubQuery (_sem_Annotation _ann) (_sem_QueryExpr _sel))
_sem_ScalarExpr (LiftApp _ann _oper _flav _args) =
    (_sem_ScalarExpr_LiftApp (_sem_Annotation _ann) (_sem_Name _oper) _flav (_sem_ScalarExprList _args))
_sem_ScalarExpr (OdbcLiteral _ann _olt _val) =
    (_sem_ScalarExpr_OdbcLiteral (_sem_Annotation _ann) _olt _val)
_sem_ScalarExpr (OdbcFunc _ann _ex) =
    (_sem_ScalarExpr_OdbcFunc (_sem_Annotation _ann) (_sem_ScalarExpr _ex))
_sem_ScalarExpr (AntiScalarExpr _string) =
    (_sem_ScalarExpr_AntiScalarExpr _string)
-- semantic domain
type T_ScalarExpr = Bool ->
                    Catalog ->
                    Environment ->
                    Bool ->
                    (Maybe TypeExtra) ->
                    TypeCheckFlags ->
                    (Maybe TypeExtra) ->
                    Bool ->
                    ( ScalarExpr,([(NameComponent,Maybe TypeExtra,ScalarExpr)]),ScalarExpr,(Maybe TypeExtra))
data Inh_ScalarExpr = Inh_ScalarExpr {_assignmentCastContext_Inh_ScalarExpr :: Bool,_cat_Inh_ScalarExpr :: Catalog,_downEnv_Inh_ScalarExpr :: Environment,_expectedCast_Inh_ScalarExpr :: Bool,_expectedType_Inh_ScalarExpr :: (Maybe TypeExtra),_flags_Inh_ScalarExpr :: TypeCheckFlags,_imCast_Inh_ScalarExpr :: (Maybe TypeExtra),_odbcFunction_Inh_ScalarExpr :: Bool}
data Syn_ScalarExpr = Syn_ScalarExpr {_annotatedTree_Syn_ScalarExpr :: ScalarExpr,_colExprs_Syn_ScalarExpr :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)]),_originalTree_Syn_ScalarExpr :: ScalarExpr,_upType_Syn_ScalarExpr :: (Maybe TypeExtra)}
_wrap_ScalarExpr :: T_ScalarExpr ->
                   Inh_ScalarExpr ->
                   Syn_ScalarExpr
_wrap_ScalarExpr sem (Inh_ScalarExpr _lhsIassignmentCastContext _lhsIcat _lhsIdownEnv _lhsIexpectedCast _lhsIexpectedType _lhsIflags _lhsIimCast _lhsIodbcFunction) =
    (let ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType) = sem _lhsIassignmentCastContext _lhsIcat _lhsIdownEnv _lhsIexpectedCast _lhsIexpectedType _lhsIflags _lhsIimCast _lhsIodbcFunction
     in  (Syn_ScalarExpr _lhsOannotatedTree _lhsOcolExprs _lhsOoriginalTree _lhsOupType))
_sem_ScalarExpr_NumberLit :: T_Annotation ->
                            String ->
                            T_ScalarExpr
_sem_ScalarExpr_NumberLit ann_ d_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 10231 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 10237 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 10243 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 10249 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 10260 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 10266 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 249, column 9)
              _tpe =
                  ({-# LINE 249 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   if all (`elem` _digChars    ) d_
                   then (mkTypeExtraNN . ScalarType) <$> classifyInteger (tcfDialect _lhsIflags) d_
                   else (mkTypeExtraNN . ScalarType) <$> (_dialectTypeName     "numeric")
                   {-# LINE 10274 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 253, column 9)
              _digChars =
                  ({-# LINE 253 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   concatMap show [(0::Int)..9]
                   {-# LINE 10280 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   NumberLit _annIannotatedTree d_
                   {-# LINE 10286 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   NumberLit _annIoriginalTree d_
                   {-# LINE 10292 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 10298 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 10304 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 10310 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 10316 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_StringLit :: T_Annotation ->
                            String ->
                            T_ScalarExpr
_sem_ScalarExpr_StringLit ann_ value_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 10363 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 10369 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 10375 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 10381 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 10392 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 10398 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 257, column 9)
              _tpe =
                  ({-# LINE 257 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Right $ (mkTypeExtraNN UnknownType) {tePrecision = Just $ length value_}
                   {-# LINE 10404 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   StringLit _annIannotatedTree value_
                   {-# LINE 10410 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   StringLit _annIoriginalTree value_
                   {-# LINE 10416 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 10422 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 10428 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 10434 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 10440 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_NullLit :: T_Annotation ->
                          T_ScalarExpr
_sem_ScalarExpr_NullLit ann_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 10486 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 10492 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 10498 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 10504 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 10515 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 10521 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 260, column 10)
              _tpe =
                  ({-# LINE 260 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Right $ mkTypeExtra UnknownType
                   {-# LINE 10527 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   NullLit _annIannotatedTree
                   {-# LINE 10533 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   NullLit _annIoriginalTree
                   {-# LINE 10539 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 10545 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 10551 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 10557 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 10563 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_BooleanLit :: T_Annotation ->
                             Bool ->
                             T_ScalarExpr
_sem_ScalarExpr_BooleanLit ann_ b_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 10610 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 10616 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 10622 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 10628 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 10639 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 10645 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 240, column 9)
              _tpe =
                  ({-# LINE 240 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   fmap (mkTypeExtraNN . ScalarType) $ _dialectTypeName     "boolean"
                   {-# LINE 10651 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   BooleanLit _annIannotatedTree b_
                   {-# LINE 10657 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   BooleanLit _annIoriginalTree b_
                   {-# LINE 10663 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 10669 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 10675 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 10681 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 10687 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_TypedStringLit :: T_Annotation ->
                                 T_TypeName ->
                                 String ->
                                 T_ScalarExpr
_sem_ScalarExpr_TypedStringLit ann_ tn_ value_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _tnOcat :: Catalog
              _tnOflags :: TypeCheckFlags
              _tnOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _tnIannotatedTree :: TypeName
              _tnInamedType :: (Maybe TypeExtra)
              _tnIoriginalTree :: TypeName
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 10741 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 10747 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 10753 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 10759 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 10770 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 10776 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 270, column 10)
              _tpe =
                  ({-# LINE 270 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right _tnInamedType
                   {-# LINE 10782 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   TypedStringLit _annIannotatedTree _tnIannotatedTree value_
                   {-# LINE 10788 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   TypedStringLit _annIoriginalTree _tnIoriginalTree value_
                   {-# LINE 10794 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 10800 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 10806 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 10812 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 10818 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tnOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 10824 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tnOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 10830 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tnOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 10836 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _tnIannotatedTree,_tnInamedType,_tnIoriginalTree) =
                  tn_ _tnOcat _tnOflags _tnOimCast
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_Interval :: T_Annotation ->
                           String ->
                           IntervalField ->
                           (Maybe Int) ->
                           T_ScalarExpr
_sem_ScalarExpr_Interval ann_ value_ field_ prec_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 10887 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 10893 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 10899 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 10905 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 10916 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 10922 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 282, column 9)
              _tpe =
                  ({-# LINE 282 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Right $ mkTypeExtraNN $ ScalarType "interval"
                   {-# LINE 10928 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Interval _annIannotatedTree value_ field_ prec_
                   {-# LINE 10934 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Interval _annIoriginalTree value_ field_ prec_
                   {-# LINE 10940 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 10946 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 10952 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 10958 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 10964 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_Identifier :: T_Annotation ->
                             T_Name ->
                             T_ScalarExpr
_sem_ScalarExpr_Identifier ann_ i_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _lhsOannotatedTree :: ScalarExpr
              _iOtpe :: (Either [TypeError] TypeExtra)
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _iOcat :: Catalog
              _iOflags :: TypeCheckFlags
              _iOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _iIannotatedTree :: Name
              _iIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 11017 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 11023 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 11029 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 11035 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 11046 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 11052 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 325, column 10)
              _elkp =
                  ({-# LINE 325 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   E.envLookupIdentifier (nameComponents _iIoriginalTree) _lhsIdownEnv
                   {-# LINE 11058 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 326, column 10)
              _tpe =
                  ({-# LINE 326 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   fmap snd _elkp
                   {-# LINE 11064 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 328, column 10)
              _lhsOannotatedTree =
                  ({-# LINE 328 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _annotatedTree
                   {-# LINE 11070 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 329, column 10)
              _annotatedTree =
                  ({-# LINE 329 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   let t = Identifier _annIannotatedTree _iIannotatedTree
                   in fromMaybe t $ do
                       case tcfAddQualifiers _lhsIflags of
                         False -> Nothing
                         True -> do
                                ((q,i),_) <- either (const Nothing) Just _elkp
                                if q /= ""
                                  then
                                       return $ Identifier _annIannotatedTree
                                                  (Name emptyAnnotation [Nmc $ T.unpack q, Nmc $ T.unpack i])
                                  else return t
                   {-# LINE 11086 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 349, column 10)
              _iOtpe =
                  ({-# LINE 349 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Left []
                   {-# LINE 11092 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Identifier _annIoriginalTree _iIoriginalTree
                   {-# LINE 11098 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 11104 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 11110 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 11116 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _iOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 11122 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _iOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 11128 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _iOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 11134 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _iIannotatedTree,_iIoriginalTree) =
                  i_ _iOcat _iOflags _iOimCast _iOtpe
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_Star :: T_Annotation ->
                       T_ScalarExpr
_sem_ScalarExpr_Star ann_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _tpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 11183 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 11189 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 11195 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 11201 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 11212 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 11218 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 713, column 9)
              _tpe =
                  ({-# LINE 713 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _originalTree of
                     Star _ ->
                       E.envExpandStar Nothing _lhsIdownEnv
                       >>= _starCS
                     QStar _ q -> do
                       E.envExpandStar (Just q) _lhsIdownEnv
                       >>= _starCS
                     _ -> Left [InternalError "wrong ctor in sem rule for star, qstar in scalarexprs.ag"]
                   {-# LINE 11231 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 722, column 9)
              _starCS =
                  ({-# LINE 722 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Right . mkTypeExtraNN . CompositeType . map (\((_q,n),t) -> (n,t))
                   {-# LINE 11237 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Star _annIannotatedTree
                   {-# LINE 11243 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Star _annIoriginalTree
                   {-# LINE 11249 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 11255 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 11261 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 11267 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 11273 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_QStar :: T_Annotation ->
                        NameComponent ->
                        T_ScalarExpr
_sem_ScalarExpr_QStar ann_ q_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _tpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 11321 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 11327 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 11333 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 11339 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 11350 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 11356 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 713, column 9)
              _tpe =
                  ({-# LINE 713 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _originalTree of
                     Star _ ->
                       E.envExpandStar Nothing _lhsIdownEnv
                       >>= _starCS
                     QStar _ q -> do
                       E.envExpandStar (Just q) _lhsIdownEnv
                       >>= _starCS
                     _ -> Left [InternalError "wrong ctor in sem rule for star, qstar in scalarexprs.ag"]
                   {-# LINE 11369 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 722, column 9)
              _starCS =
                  ({-# LINE 722 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Right . mkTypeExtraNN . CompositeType . map (\((_q,n),t) -> (n,t))
                   {-# LINE 11375 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   QStar _annIannotatedTree q_
                   {-# LINE 11381 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   QStar _annIoriginalTree q_
                   {-# LINE 11387 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 11393 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 11399 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 11405 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 11411 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_PositionalArg :: T_Annotation ->
                                Integer ->
                                T_ScalarExpr
_sem_ScalarExpr_PositionalArg ann_ p_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 11458 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 11464 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 11470 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 11476 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 11487 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 11493 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 734, column 9)
              _tpe =
                  ({-# LINE 734 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Left []
                   {-# LINE 11499 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   PositionalArg _annIannotatedTree p_
                   {-# LINE 11505 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   PositionalArg _annIoriginalTree p_
                   {-# LINE 11511 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 11517 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 11523 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 11529 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 11535 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_Placeholder :: T_Annotation ->
                              T_ScalarExpr
_sem_ScalarExpr_Placeholder ann_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 11581 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 11587 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 11593 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 11599 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 11610 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 11616 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 300, column 10)
              _tpe =
                  ({-# LINE 300 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Right $ mkTypeExtraNN UnknownType
                   {-# LINE 11622 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Placeholder _annIannotatedTree
                   {-# LINE 11628 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Placeholder _annIoriginalTree
                   {-# LINE 11634 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 11640 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 11646 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 11652 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 11658 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_PrefixOp :: T_Annotation ->
                           T_Name ->
                           T_ScalarExpr ->
                           T_ScalarExpr
_sem_ScalarExpr_PrefixOp ann_ opName_ arg_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _argOodbcFunction :: Bool
              _opNameOtpe :: (Either [TypeError] TypeExtra)
              _tpe :: (Either [TypeError] TypeExtra)
              _ttpe :: (Either [TypeError] ([TypeExtra],TypeExtra))
              _argOexpectedType :: (Maybe TypeExtra)
              _argOexpectedCast :: Bool
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _opNameOcat :: Catalog
              _opNameOflags :: TypeCheckFlags
              _opNameOimCast :: (Maybe TypeExtra)
              _argOassignmentCastContext :: Bool
              _argOcat :: Catalog
              _argOdownEnv :: Environment
              _argOflags :: TypeCheckFlags
              _argOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _opNameIannotatedTree :: Name
              _opNameIoriginalTree :: Name
              _argIannotatedTree :: ScalarExpr
              _argIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _argIoriginalTree :: ScalarExpr
              _argIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 11726 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 11732 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 11738 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 11744 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 11755 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 11761 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 175, column 26)
              _argOodbcFunction =
                  ({-# LINE 175 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 11767 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 210, column 9)
              _opNameOtpe =
                  ({-# LINE 210 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Left []
                   {-# LINE 11773 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 364, column 10)
              _tpe =
                  ({-# LINE 364 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   fmap snd _ttpe
                   {-# LINE 11779 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 433, column 10)
              _ttpe =
                  ({-# LINE 433 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   tcAppLike (tcfDialect _lhsIflags) _lhsIcat (nameComponents _opNameIoriginalTree) (getMaybeIntsFromLiterals [_argIoriginalTree]) [_argIupType]
                   {-# LINE 11785 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 434, column 10)
              _argOexpectedType =
                  ({-# LINE 434 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _ttpe     of
                     Right ([t],_) -> Just t
                     _ -> Nothing
                   {-# LINE 11793 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 456, column 9)
              _argOexpectedCast =
                  ({-# LINE 456 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 11799 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   PrefixOp _annIannotatedTree _opNameIannotatedTree _argIannotatedTree
                   {-# LINE 11805 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   PrefixOp _annIoriginalTree _opNameIoriginalTree _argIoriginalTree
                   {-# LINE 11811 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 11817 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 11823 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 11829 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 11835 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _opNameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 11841 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _opNameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 11847 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _opNameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 11853 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 11859 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 11865 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 11871 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 11877 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 11883 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _opNameIannotatedTree,_opNameIoriginalTree) =
                  opName_ _opNameOcat _opNameOflags _opNameOimCast _opNameOtpe
              ( _argIannotatedTree,_argIcolExprs,_argIoriginalTree,_argIupType) =
                  arg_ _argOassignmentCastContext _argOcat _argOdownEnv _argOexpectedCast _argOexpectedType _argOflags _argOimCast _argOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_PostfixOp :: T_Annotation ->
                            T_Name ->
                            T_ScalarExpr ->
                            T_ScalarExpr
_sem_ScalarExpr_PostfixOp ann_ opName_ arg_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _argOodbcFunction :: Bool
              _opNameOtpe :: (Either [TypeError] TypeExtra)
              _tpe :: (Either [TypeError] TypeExtra)
              _ttpe :: (Either [TypeError] ([TypeExtra],TypeExtra))
              _argOexpectedType :: (Maybe TypeExtra)
              _argOexpectedCast :: Bool
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _opNameOcat :: Catalog
              _opNameOflags :: TypeCheckFlags
              _opNameOimCast :: (Maybe TypeExtra)
              _argOassignmentCastContext :: Bool
              _argOcat :: Catalog
              _argOdownEnv :: Environment
              _argOflags :: TypeCheckFlags
              _argOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _opNameIannotatedTree :: Name
              _opNameIoriginalTree :: Name
              _argIannotatedTree :: ScalarExpr
              _argIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _argIoriginalTree :: ScalarExpr
              _argIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 11955 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 11961 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 11967 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 11973 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 11984 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 11990 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 175, column 26)
              _argOodbcFunction =
                  ({-# LINE 175 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 11996 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 210, column 9)
              _opNameOtpe =
                  ({-# LINE 210 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Left []
                   {-# LINE 12002 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 364, column 10)
              _tpe =
                  ({-# LINE 364 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   fmap snd _ttpe
                   {-# LINE 12008 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 433, column 10)
              _ttpe =
                  ({-# LINE 433 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   tcAppLike (tcfDialect _lhsIflags) _lhsIcat (nameComponents _opNameIoriginalTree) (getMaybeIntsFromLiterals [_argIoriginalTree]) [_argIupType]
                   {-# LINE 12014 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 434, column 10)
              _argOexpectedType =
                  ({-# LINE 434 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _ttpe     of
                     Right ([t],_) -> Just t
                     _ -> Nothing
                   {-# LINE 12022 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 456, column 9)
              _argOexpectedCast =
                  ({-# LINE 456 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 12028 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   PostfixOp _annIannotatedTree _opNameIannotatedTree _argIannotatedTree
                   {-# LINE 12034 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   PostfixOp _annIoriginalTree _opNameIoriginalTree _argIoriginalTree
                   {-# LINE 12040 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 12046 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 12052 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 12058 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 12064 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _opNameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 12070 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _opNameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 12076 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _opNameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 12082 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 12088 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 12094 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 12100 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 12106 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 12112 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _opNameIannotatedTree,_opNameIoriginalTree) =
                  opName_ _opNameOcat _opNameOflags _opNameOimCast _opNameOtpe
              ( _argIannotatedTree,_argIcolExprs,_argIoriginalTree,_argIupType) =
                  arg_ _argOassignmentCastContext _argOcat _argOdownEnv _argOexpectedCast _argOexpectedType _argOflags _argOimCast _argOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_BinaryOp :: T_Annotation ->
                           T_Name ->
                           T_ScalarExpr ->
                           T_ScalarExpr ->
                           T_ScalarExpr
_sem_ScalarExpr_BinaryOp ann_ opName_ arg0_ arg1_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _arg0OodbcFunction :: Bool
              _arg1OodbcFunction :: Bool
              _opNameOtpe :: (Either [TypeError] TypeExtra)
              _tpe :: (Either [TypeError] TypeExtra)
              _ttpe :: (Either [TypeError] ([TypeExtra],TypeExtra))
              _arg0OexpectedType :: (Maybe TypeExtra)
              _arg1OexpectedType :: (Maybe TypeExtra)
              _arg0OexpectedCast :: Bool
              _arg1OexpectedCast :: Bool
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _opNameOcat :: Catalog
              _opNameOflags :: TypeCheckFlags
              _opNameOimCast :: (Maybe TypeExtra)
              _arg0OassignmentCastContext :: Bool
              _arg0Ocat :: Catalog
              _arg0OdownEnv :: Environment
              _arg0Oflags :: TypeCheckFlags
              _arg0OimCast :: (Maybe TypeExtra)
              _arg1OassignmentCastContext :: Bool
              _arg1Ocat :: Catalog
              _arg1OdownEnv :: Environment
              _arg1Oflags :: TypeCheckFlags
              _arg1OimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _opNameIannotatedTree :: Name
              _opNameIoriginalTree :: Name
              _arg0IannotatedTree :: ScalarExpr
              _arg0IcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _arg0IoriginalTree :: ScalarExpr
              _arg0IupType :: (Maybe TypeExtra)
              _arg1IannotatedTree :: ScalarExpr
              _arg1IcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _arg1IoriginalTree :: ScalarExpr
              _arg1IupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 12197 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 12203 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 12209 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 12215 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 12226 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 12232 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 176, column 16)
              _arg0OodbcFunction =
                  ({-# LINE 176 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 12238 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 177, column 16)
              _arg1OodbcFunction =
                  ({-# LINE 177 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 12244 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 210, column 9)
              _opNameOtpe =
                  ({-# LINE 210 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Left []
                   {-# LINE 12250 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 364, column 10)
              _tpe =
                  ({-# LINE 364 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   fmap snd _ttpe
                   {-# LINE 12256 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 425, column 10)
              _ttpe =
                  ({-# LINE 425 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   tcAppLike (tcfDialect _lhsIflags)
                             _lhsIcat (nameComponents _opNameIoriginalTree) (getMaybeIntsFromLiterals [_arg0IoriginalTree,_arg1IoriginalTree])
                             [_arg0IupType,_arg1IupType]
                   {-# LINE 12264 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 428, column 10)
              (_arg0OexpectedType,_arg1OexpectedType) =
                  ({-# LINE 428 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _ttpe     of
                     Right ([t0,t1],_) -> (Just t0,Just t1)
                     _ -> (Nothing,Nothing)
                   {-# LINE 12272 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 458, column 9)
              _arg0OexpectedCast =
                  ({-# LINE 458 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 12278 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 459, column 9)
              _arg1OexpectedCast =
                  ({-# LINE 459 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 12284 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   BinaryOp _annIannotatedTree _opNameIannotatedTree _arg0IannotatedTree _arg1IannotatedTree
                   {-# LINE 12290 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   BinaryOp _annIoriginalTree _opNameIoriginalTree _arg0IoriginalTree _arg1IoriginalTree
                   {-# LINE 12296 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 12302 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 12308 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 12314 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 12320 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _opNameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 12326 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _opNameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 12332 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _opNameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 12338 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _arg0OassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 12344 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _arg0Ocat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 12350 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _arg0OdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 12356 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _arg0Oflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 12362 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _arg0OimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 12368 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _arg1OassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 12374 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _arg1Ocat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 12380 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _arg1OdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 12386 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _arg1Oflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 12392 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _arg1OimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 12398 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _opNameIannotatedTree,_opNameIoriginalTree) =
                  opName_ _opNameOcat _opNameOflags _opNameOimCast _opNameOtpe
              ( _arg0IannotatedTree,_arg0IcolExprs,_arg0IoriginalTree,_arg0IupType) =
                  arg0_ _arg0OassignmentCastContext _arg0Ocat _arg0OdownEnv _arg0OexpectedCast _arg0OexpectedType _arg0Oflags _arg0OimCast _arg0OodbcFunction
              ( _arg1IannotatedTree,_arg1IcolExprs,_arg1IoriginalTree,_arg1IupType) =
                  arg1_ _arg1OassignmentCastContext _arg1Ocat _arg1OdownEnv _arg1OexpectedCast _arg1OexpectedType _arg1Oflags _arg1OimCast _arg1OodbcFunction
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_SpecialOp :: T_Annotation ->
                            T_Name ->
                            T_ScalarExprList ->
                            T_ScalarExpr
_sem_ScalarExpr_SpecialOp ann_ opName_ args_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _opNameOtpe :: (Either [TypeError] TypeExtra)
              _tpe :: (Either [TypeError] TypeExtra)
              _ttpe :: (Either [TypeError] ([TypeExtra],TypeExtra))
              _argsOexpectedTypes :: ([TypeExtra])
              _argsOexpectedCast :: Bool
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _opNameOcat :: Catalog
              _opNameOflags :: TypeCheckFlags
              _opNameOimCast :: (Maybe TypeExtra)
              _argsOassignmentCastContext :: Bool
              _argsOcat :: Catalog
              _argsOdownEnv :: Environment
              _argsOflags :: TypeCheckFlags
              _argsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _opNameIannotatedTree :: Name
              _opNameIoriginalTree :: Name
              _argsIannotatedTree :: ScalarExprList
              _argsIoriginalTree :: ScalarExprList
              _argsIupTypes :: ([Maybe TypeExtra])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 12470 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 12476 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 12482 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 12488 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 12499 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 12505 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 210, column 9)
              _opNameOtpe =
                  ({-# LINE 210 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Left []
                   {-# LINE 12511 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 364, column 10)
              _tpe =
                  ({-# LINE 364 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   fmap snd _ttpe
                   {-# LINE 12517 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 439, column 10)
              _ttpe =
                  ({-# LINE 439 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   tcAppLike (tcfDialect _lhsIflags) _lhsIcat (nameComponents _opNameIoriginalTree) (getMaybeIntsFromLiterals _argsIoriginalTree) _argsIupTypes
                   {-# LINE 12523 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 440, column 10)
              _argsOexpectedTypes =
                  ({-# LINE 440 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const []) id $ fmap fst _ttpe
                   {-# LINE 12529 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 454, column 9)
              _argsOexpectedCast =
                  ({-# LINE 454 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 12535 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SpecialOp _annIannotatedTree _opNameIannotatedTree _argsIannotatedTree
                   {-# LINE 12541 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SpecialOp _annIoriginalTree _opNameIoriginalTree _argsIoriginalTree
                   {-# LINE 12547 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 12553 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 12559 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 12565 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 12571 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _opNameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 12577 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _opNameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 12583 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _opNameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 12589 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 12595 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 12601 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOdownEnv =
                  ({-# LINE 189 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 12607 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 12613 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 12619 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _opNameIannotatedTree,_opNameIoriginalTree) =
                  opName_ _opNameOcat _opNameOflags _opNameOimCast _opNameOtpe
              ( _argsIannotatedTree,_argsIoriginalTree,_argsIupTypes) =
                  args_ _argsOassignmentCastContext _argsOcat _argsOdownEnv _argsOexpectedCast _argsOexpectedTypes _argsOflags _argsOimCast
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_Extract :: T_Annotation ->
                          ExtractField ->
                          T_ScalarExpr ->
                          T_ScalarExpr
_sem_ScalarExpr_Extract ann_ field_ e_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _eOodbcFunction :: Bool
              _eOexpectedType :: (Maybe TypeExtra)
              _eOexpectedCast :: Bool
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _eOassignmentCastContext :: Bool
              _eOcat :: Catalog
              _eOdownEnv :: Environment
              _eOflags :: TypeCheckFlags
              _eOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _eIannotatedTree :: ScalarExpr
              _eIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _eIoriginalTree :: ScalarExpr
              _eIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 12683 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 12689 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 12695 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 12701 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 12712 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 12718 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 171, column 15)
              _eOodbcFunction =
                  ({-# LINE 171 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 12724 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 284, column 9)
              _tpe =
                  ({-# LINE 284 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   do
                   x <- maybe (Left []) Right _eIupType
                   if (teType x) `elem` (map ScalarType $ diDatetimeTypes $ tcfDialect _lhsIflags)
                     then do
                          i <- ScalarType <$> _dialectTypeName     "int"
                          return $ TypeExtra i Nothing Nothing $ teNullable x
                     else Left [NoMatchingOperator "extract" [teType x]]
                   {-# LINE 12736 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 292, column 9)
              _eOexpectedType =
                  ({-# LINE 292 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   do
                   x <- _eIupType
                   either (const Nothing)
                          (Just . TypeExtra (teType x) Nothing Nothing . teNullable)
                          _tpe
                   {-# LINE 12746 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 298, column 9)
              _eOexpectedCast =
                  ({-# LINE 298 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 12752 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Extract _annIannotatedTree field_ _eIannotatedTree
                   {-# LINE 12758 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Extract _annIoriginalTree field_ _eIoriginalTree
                   {-# LINE 12764 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 12770 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 12776 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 12782 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 12788 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _eOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 12794 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _eOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 12800 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _eOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 12806 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _eOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 12812 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _eOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 12818 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _eIannotatedTree,_eIcolExprs,_eIoriginalTree,_eIupType) =
                  e_ _eOassignmentCastContext _eOcat _eOdownEnv _eOexpectedCast _eOexpectedType _eOflags _eOimCast _eOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_App :: T_Annotation ->
                      T_Name ->
                      T_ScalarExprList ->
                      T_ScalarExpr
_sem_ScalarExpr_App ann_ funName_ args_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _funNameOtpe :: (Either [TypeError] TypeExtra)
              _tpe :: (Either [TypeError] TypeExtra)
              _argsOexpectedTypes :: ([TypeExtra])
              _ttpe :: (Either [TypeError] ([TypeExtra],TypeExtra))
              _argsOexpectedCast :: Bool
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _funNameOcat :: Catalog
              _funNameOflags :: TypeCheckFlags
              _funNameOimCast :: (Maybe TypeExtra)
              _argsOassignmentCastContext :: Bool
              _argsOcat :: Catalog
              _argsOdownEnv :: Environment
              _argsOflags :: TypeCheckFlags
              _argsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _funNameIannotatedTree :: Name
              _funNameIoriginalTree :: Name
              _argsIannotatedTree :: ScalarExprList
              _argsIoriginalTree :: ScalarExprList
              _argsIupTypes :: ([Maybe TypeExtra])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 12886 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 12892 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 12898 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 12904 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 12915 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 12921 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 208, column 9)
              _funNameOtpe =
                  ({-# LINE 208 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Left []
                   {-# LINE 12927 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 364, column 10)
              _tpe =
                  ({-# LINE 364 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   fmap snd _ttpe
                   {-# LINE 12933 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 366, column 10)
              _argsOexpectedTypes =
                  ({-# LINE 366 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const []) id $ fmap fst _ttpe
                   {-# LINE 12939 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 380, column 10)
              _funName =
                  ({-# LINE 380 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   let y = if _lhsIodbcFunction
                           then let f [] = []
                                    f [Nmc x] = [Nmc $ "!odbc-" ++ x]
                                    f [QNmc x] = [QNmc $ "!odbc-" ++ x]
                                    f [x] = [x]
                                    f (x:xs) = x:f xs
                                in (\(Name a nms) -> Name a (f nms)) _funNameIoriginalTree
                           else _funNameIoriginalTree
                   in                    y
                   {-# LINE 12953 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 403, column 10)
              _ttpe =
                  ({-# LINE 403 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _originalTree of
                     (App _ (Name _ [Nmc "count"]) [Star _]) ->
                         tcAppLike (tcfDialect _lhsIflags)
                                   _lhsIcat (nameComponents _funName    )
                                   (getMaybeIntsFromLiterals _argsIoriginalTree)
                                   [Just $ mkTypeExtraNN UnknownType]
                     (App _ (Name _ [Nmc n]) [_,Identifier _ (Name _ [Nmc tyi])])
                         | _lhsIodbcFunction && map toLower n == "convert" -> do
                         (ts,_r) <- do
                                   t <- _dialectTypeName     "int"
                                   tcAppLike (tcfDialect _lhsIflags)
                                     _lhsIcat (nameComponents _funName    ) (getMaybeIntsFromLiterals _argsIoriginalTree)
                                     [Just $ mkTypeExtraNN UnknownType, Just $ mkTypeExtraNN $ ScalarType t]
                         r' <- maybe (Left [UnrecognisedIdentifier $ T.pack tyi]) (Right . mkTypeExtra)
                                  $ lookup (map toLower tyi) odbcConvertTypes
                         Right (ts, r')
                     _ -> tcAppLike (tcfDialect _lhsIflags)
                                    _lhsIcat (nameComponents _funName    ) (getMaybeIntsFromLiterals _argsIoriginalTree) _argsIupTypes
                   {-# LINE 12976 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 454, column 9)
              _argsOexpectedCast =
                  ({-# LINE 454 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 12982 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   App _annIannotatedTree _funNameIannotatedTree _argsIannotatedTree
                   {-# LINE 12988 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   App _annIoriginalTree _funNameIoriginalTree _argsIoriginalTree
                   {-# LINE 12994 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 13000 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 13006 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 13012 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 13018 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _funNameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 13024 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _funNameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 13030 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _funNameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 13036 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 13042 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 13048 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOdownEnv =
                  ({-# LINE 189 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 13054 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 13060 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 13066 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _funNameIannotatedTree,_funNameIoriginalTree) =
                  funName_ _funNameOcat _funNameOflags _funNameOimCast _funNameOtpe
              ( _argsIannotatedTree,_argsIoriginalTree,_argsIupTypes) =
                  args_ _argsOassignmentCastContext _argsOcat _argsOdownEnv _argsOexpectedCast _argsOexpectedTypes _argsOflags _argsOimCast
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_AggregateApp :: T_Annotation ->
                               Distinct ->
                               T_ScalarExpr ->
                               T_ScalarExprDirectionPairList ->
                               T_ScalarExpr
_sem_ScalarExpr_AggregateApp ann_ aggDistinct_ fn_ orderBy_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _fnOodbcFunction :: Bool
              _fnOexpectedCast :: Bool
              _fnOexpectedType :: (Maybe TypeExtra)
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _fnOassignmentCastContext :: Bool
              _fnOcat :: Catalog
              _fnOdownEnv :: Environment
              _fnOflags :: TypeCheckFlags
              _fnOimCast :: (Maybe TypeExtra)
              _orderByOcat :: Catalog
              _orderByOdownEnv :: Environment
              _orderByOflags :: TypeCheckFlags
              _orderByOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _fnIannotatedTree :: ScalarExpr
              _fnIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _fnIoriginalTree :: ScalarExpr
              _fnIupType :: (Maybe TypeExtra)
              _orderByIannotatedTree :: ScalarExprDirectionPairList
              _orderByIoriginalTree :: ScalarExprDirectionPairList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 13137 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 13143 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 13149 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 13155 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 13166 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 13172 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 178, column 20)
              _fnOodbcFunction =
                  ({-# LINE 178 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 13178 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 442, column 10)
              _tpe =
                  ({-# LINE 442 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _fnIoriginalTree of
                     (App _ fnm@(Name _ [Nmc "count"]) [Star _]) ->
                          fmap snd $ tcAppLike (tcfDialect _lhsIflags) _lhsIcat (nameComponents fnm) [] [Just $ mkTypeExtraNN UnknownType]
                     _ -> maybe (Left []) Right _fnIupType
                   {-# LINE 13187 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 461, column 9)
              _fnOexpectedCast =
                  ({-# LINE 461 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 13193 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 752, column 28)
              _fnOexpectedType =
                  ({-# LINE 752 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Nothing
                   {-# LINE 13199 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AggregateApp _annIannotatedTree aggDistinct_ _fnIannotatedTree _orderByIannotatedTree
                   {-# LINE 13205 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AggregateApp _annIoriginalTree aggDistinct_ _fnIoriginalTree _orderByIoriginalTree
                   {-# LINE 13211 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 13217 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 13223 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 13229 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 13235 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 13241 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 13247 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 13253 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 13259 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 13265 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _orderByOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 13271 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _orderByOdownEnv =
                  ({-# LINE 215 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 13277 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _orderByOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 13283 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _orderByOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 13289 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _fnIannotatedTree,_fnIcolExprs,_fnIoriginalTree,_fnIupType) =
                  fn_ _fnOassignmentCastContext _fnOcat _fnOdownEnv _fnOexpectedCast _fnOexpectedType _fnOflags _fnOimCast _fnOodbcFunction
              ( _orderByIannotatedTree,_orderByIoriginalTree) =
                  orderBy_ _orderByOcat _orderByOdownEnv _orderByOflags _orderByOimCast
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_WindowApp :: T_Annotation ->
                            T_ScalarExpr ->
                            T_ScalarExprList ->
                            T_ScalarExprDirectionPairList ->
                            (Maybe FrameClause) ->
                            T_ScalarExpr
_sem_ScalarExpr_WindowApp ann_ fn_ partitionBy_ orderBy_ frm_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _fnOodbcFunction :: Bool
              _fnOexpectedCast :: Bool
              _partitionByOexpectedCast :: Bool
              _fnOexpectedType :: (Maybe TypeExtra)
              _partitionByOexpectedTypes :: ([TypeExtra])
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _fnOassignmentCastContext :: Bool
              _fnOcat :: Catalog
              _fnOdownEnv :: Environment
              _fnOflags :: TypeCheckFlags
              _fnOimCast :: (Maybe TypeExtra)
              _partitionByOassignmentCastContext :: Bool
              _partitionByOcat :: Catalog
              _partitionByOdownEnv :: Environment
              _partitionByOflags :: TypeCheckFlags
              _partitionByOimCast :: (Maybe TypeExtra)
              _orderByOcat :: Catalog
              _orderByOdownEnv :: Environment
              _orderByOflags :: TypeCheckFlags
              _orderByOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _fnIannotatedTree :: ScalarExpr
              _fnIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _fnIoriginalTree :: ScalarExpr
              _fnIupType :: (Maybe TypeExtra)
              _partitionByIannotatedTree :: ScalarExprList
              _partitionByIoriginalTree :: ScalarExprList
              _partitionByIupTypes :: ([Maybe TypeExtra])
              _orderByIannotatedTree :: ScalarExprDirectionPairList
              _orderByIoriginalTree :: ScalarExprDirectionPairList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 13371 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 13377 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 13383 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 13389 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 13400 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 13406 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 179, column 17)
              _fnOodbcFunction =
                  ({-# LINE 179 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 13412 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 448, column 10)
              _tpe =
                  ({-# LINE 448 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right _fnIupType
                   {-# LINE 13418 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 461, column 9)
              _fnOexpectedCast =
                  ({-# LINE 461 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 13424 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 464, column 9)
              _partitionByOexpectedCast =
                  ({-# LINE 464 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 13430 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 752, column 28)
              _fnOexpectedType =
                  ({-# LINE 752 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Nothing
                   {-# LINE 13436 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 774, column 15)
              _partitionByOexpectedTypes =
                  ({-# LINE 774 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   []
                   {-# LINE 13442 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   WindowApp _annIannotatedTree _fnIannotatedTree _partitionByIannotatedTree _orderByIannotatedTree frm_
                   {-# LINE 13448 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   WindowApp _annIoriginalTree _fnIoriginalTree _partitionByIoriginalTree _orderByIoriginalTree frm_
                   {-# LINE 13454 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 13460 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 13466 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 13472 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 13478 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 13484 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 13490 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 13496 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 13502 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 13508 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _partitionByOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 13514 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _partitionByOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 13520 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _partitionByOdownEnv =
                  ({-# LINE 189 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 13526 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _partitionByOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 13532 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _partitionByOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 13538 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _orderByOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 13544 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _orderByOdownEnv =
                  ({-# LINE 215 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 13550 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _orderByOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 13556 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _orderByOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 13562 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _fnIannotatedTree,_fnIcolExprs,_fnIoriginalTree,_fnIupType) =
                  fn_ _fnOassignmentCastContext _fnOcat _fnOdownEnv _fnOexpectedCast _fnOexpectedType _fnOflags _fnOimCast _fnOodbcFunction
              ( _partitionByIannotatedTree,_partitionByIoriginalTree,_partitionByIupTypes) =
                  partitionBy_ _partitionByOassignmentCastContext _partitionByOcat _partitionByOdownEnv _partitionByOexpectedCast _partitionByOexpectedTypes _partitionByOflags _partitionByOimCast
              ( _orderByIannotatedTree,_orderByIoriginalTree) =
                  orderBy_ _orderByOcat _orderByOdownEnv _orderByOflags _orderByOimCast
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_Cast :: T_Annotation ->
                       T_ScalarExpr ->
                       T_TypeName ->
                       T_ScalarExpr
_sem_ScalarExpr_Cast ann_ expr_ tn_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _exprOodbcFunction :: Bool
              _exprOexpectedType :: (Maybe TypeExtra)
              _exprOexpectedCast :: Bool
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _exprOassignmentCastContext :: Bool
              _exprOcat :: Catalog
              _exprOdownEnv :: Environment
              _exprOflags :: TypeCheckFlags
              _exprOimCast :: (Maybe TypeExtra)
              _tnOcat :: Catalog
              _tnOflags :: TypeCheckFlags
              _tnOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exprIannotatedTree :: ScalarExpr
              _exprIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exprIoriginalTree :: ScalarExpr
              _exprIupType :: (Maybe TypeExtra)
              _tnIannotatedTree :: TypeName
              _tnInamedType :: (Maybe TypeExtra)
              _tnIoriginalTree :: TypeName
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 13634 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 13640 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 13646 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 13652 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 13663 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 13669 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 172, column 12)
              _exprOodbcFunction =
                  ({-# LINE 172 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 13675 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 272, column 10)
              _tpe =
                  ({-# LINE 272 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   let nullability = fromMaybe False $ teNullable <$> _exprIupType
                       setNullability te = te{teNullable = nullability}
                   in maybe (Left []) (Right . setNullability) _tnInamedType
                   {-# LINE 13683 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 276, column 10)
              _exprOexpectedType =
                  ({-# LINE 276 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Nothing
                   {-# LINE 13689 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 277, column 10)
              _exprOexpectedCast =
                  ({-# LINE 277 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 13695 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Cast _annIannotatedTree _exprIannotatedTree _tnIannotatedTree
                   {-# LINE 13701 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Cast _annIoriginalTree _exprIoriginalTree _tnIoriginalTree
                   {-# LINE 13707 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 13713 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 13719 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 13725 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 13731 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 13737 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 13743 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 13749 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 13755 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 13761 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tnOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 13767 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tnOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 13773 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tnOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 13779 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exprIannotatedTree,_exprIcolExprs,_exprIoriginalTree,_exprIupType) =
                  expr_ _exprOassignmentCastContext _exprOcat _exprOdownEnv _exprOexpectedCast _exprOexpectedType _exprOflags _exprOimCast _exprOodbcFunction
              ( _tnIannotatedTree,_tnInamedType,_tnIoriginalTree) =
                  tn_ _tnOcat _tnOflags _tnOimCast
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_ImplicitCast :: T_Annotation ->
                               T_ScalarExpr ->
                               TypeExtra ->
                               T_ScalarExpr
_sem_ScalarExpr_ImplicitCast ann_ expr_ te_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _exprOodbcFunction :: Bool
              _exprOexpectedType :: (Maybe TypeExtra)
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _exprOassignmentCastContext :: Bool
              _exprOcat :: Catalog
              _exprOdownEnv :: Environment
              _exprOexpectedCast :: Bool
              _exprOflags :: TypeCheckFlags
              _exprOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exprIannotatedTree :: ScalarExpr
              _exprIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exprIoriginalTree :: ScalarExpr
              _exprIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 13843 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 13849 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 13855 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 13861 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 13872 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 13878 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 173, column 20)
              _exprOodbcFunction =
                  ({-# LINE 173 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 13884 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 279, column 9)
              _tpe =
                  ({-# LINE 279 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Right te_
                   {-# LINE 13890 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 280, column 9)
              _exprOexpectedType =
                  ({-# LINE 280 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Nothing
                   {-# LINE 13896 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ImplicitCast _annIannotatedTree _exprIannotatedTree te_
                   {-# LINE 13902 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ImplicitCast _annIoriginalTree _exprIoriginalTree te_
                   {-# LINE 13908 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 13914 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 13920 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 13926 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 13932 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 13938 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 13944 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 13950 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOexpectedCast =
                  ({-# LINE 111 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIexpectedCast
                   {-# LINE 13956 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 13962 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 13968 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exprIannotatedTree,_exprIcolExprs,_exprIoriginalTree,_exprIupType) =
                  expr_ _exprOassignmentCastContext _exprOcat _exprOdownEnv _exprOexpectedCast _exprOexpectedType _exprOflags _exprOimCast _exprOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_Case :: T_Annotation ->
                       T_CaseScalarExprListScalarExprPairList ->
                       T_MaybeScalarExpr ->
                       T_ScalarExpr
_sem_ScalarExpr_Case ann_ cases_ els_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _casesOwhenExpectedType :: (Maybe TypeExtra)
              _casesOthenExpectedType :: (Maybe TypeExtra)
              _elsOexpectedType :: (Maybe TypeExtra)
              _elsOexpectedCast :: Bool
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _casesOcat :: Catalog
              _casesOdownEnv :: Environment
              _casesOflags :: TypeCheckFlags
              _casesOimCast :: (Maybe TypeExtra)
              _elsOassignmentCastContext :: Bool
              _elsOcat :: Catalog
              _elsOdownEnv :: Environment
              _elsOflags :: TypeCheckFlags
              _elsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _casesIannotatedTree :: CaseScalarExprListScalarExprPairList
              _casesIoriginalTree :: CaseScalarExprListScalarExprPairList
              _casesIthenTypes :: ([Maybe TypeExtra])
              _casesIupTypes :: ([Maybe TypeExtra])
              _casesIwhenTypes :: ([[Maybe TypeExtra]])
              _elsIannotatedTree :: MaybeScalarExpr
              _elsIoriginalTree :: MaybeScalarExpr
              _elsIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 14039 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 14045 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 14051 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 14057 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 14068 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 14074 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 558, column 9)
              _whenTypes =
                  ({-# LINE 558 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _casesIwhenTypes
                   {-# LINE 14080 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 559, column 9)
              _thenTypes =
                  ({-# LINE 559 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _casesIthenTypes ++ maybe [] ((:[]) . Just) _elsIupType
                   {-# LINE 14086 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 561, column 9)
              _tpe =
                  ({-# LINE 561 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   do
                   wt <- mapM (maybe (Left []) Right) $ concat _whenTypes
                   bt <- ScalarType <$> _dialectTypeName     "boolean"
                   when (any ((/= bt) . teType) wt)
                       $ Left [WrongTypes bt $ map teType wt]
                   tt <- mapM (maybe (Left []) Right) _thenTypes
                   tse <- resolveResultSetTypeExtra _lhsIcat tt
                   return $ if isNothing _elsIoriginalTree
                            then tse{teNullable=True}
                            else tse
                   {-# LINE 14101 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 573, column 9)
              _casesOwhenExpectedType =
                  ({-# LINE 573 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   do
                   ws <- sequence $ concat _whenTypes
                   w <- either (const Nothing) Just $ resolveResultSetTypeExtra _lhsIcat ws
                   bt <- ScalarType <$> either (const Nothing) Just (_dialectTypeName     "boolean")
                   Just $ TypeExtra bt Nothing Nothing $ teNullable w
                   {-# LINE 14111 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 579, column 9)
              _casesOthenExpectedType =
                  ({-# LINE 579 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 14117 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 580, column 9)
              _elsOexpectedType =
                  ({-# LINE 580 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 14123 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 581, column 9)
              _elsOexpectedCast =
                  ({-# LINE 581 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   True
                   {-# LINE 14129 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Case _annIannotatedTree _casesIannotatedTree _elsIannotatedTree
                   {-# LINE 14135 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Case _annIoriginalTree _casesIoriginalTree _elsIoriginalTree
                   {-# LINE 14141 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 14147 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 14153 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 14159 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 14165 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 14171 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOdownEnv =
                  ({-# LINE 553 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 14177 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 14183 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 14189 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 14195 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 14201 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 14207 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 14213 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 14219 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _casesIannotatedTree,_casesIoriginalTree,_casesIthenTypes,_casesIupTypes,_casesIwhenTypes) =
                  cases_ _casesOcat _casesOdownEnv _casesOflags _casesOimCast _casesOthenExpectedType _casesOwhenExpectedType
              ( _elsIannotatedTree,_elsIoriginalTree,_elsIupType) =
                  els_ _elsOassignmentCastContext _elsOcat _elsOdownEnv _elsOexpectedCast _elsOexpectedType _elsOflags _elsOimCast
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_CaseSimple :: T_Annotation ->
                             T_ScalarExpr ->
                             T_CaseScalarExprListScalarExprPairList ->
                             T_MaybeScalarExpr ->
                             T_ScalarExpr
_sem_ScalarExpr_CaseSimple ann_ value_ cases_ els_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _valueOodbcFunction :: Bool
              _casesOwhenExpectedType :: (Maybe TypeExtra)
              _valueOexpectedType :: (Maybe TypeExtra)
              _valueOexpectedCast :: Bool
              _casesOthenExpectedType :: (Maybe TypeExtra)
              _elsOexpectedType :: (Maybe TypeExtra)
              _elsOexpectedCast :: Bool
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _valueOassignmentCastContext :: Bool
              _valueOcat :: Catalog
              _valueOdownEnv :: Environment
              _valueOflags :: TypeCheckFlags
              _valueOimCast :: (Maybe TypeExtra)
              _casesOcat :: Catalog
              _casesOdownEnv :: Environment
              _casesOflags :: TypeCheckFlags
              _casesOimCast :: (Maybe TypeExtra)
              _elsOassignmentCastContext :: Bool
              _elsOcat :: Catalog
              _elsOdownEnv :: Environment
              _elsOflags :: TypeCheckFlags
              _elsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _valueIannotatedTree :: ScalarExpr
              _valueIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _valueIoriginalTree :: ScalarExpr
              _valueIupType :: (Maybe TypeExtra)
              _casesIannotatedTree :: CaseScalarExprListScalarExprPairList
              _casesIoriginalTree :: CaseScalarExprListScalarExprPairList
              _casesIthenTypes :: ([Maybe TypeExtra])
              _casesIupTypes :: ([Maybe TypeExtra])
              _casesIwhenTypes :: ([[Maybe TypeExtra]])
              _elsIannotatedTree :: MaybeScalarExpr
              _elsIoriginalTree :: MaybeScalarExpr
              _elsIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 14305 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 14311 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 14317 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 14323 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 14334 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 14340 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 174, column 18)
              _valueOodbcFunction =
                  ({-# LINE 174 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 14346 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 558, column 9)
              _whenTypes =
                  ({-# LINE 558 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _casesIwhenTypes
                   {-# LINE 14352 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 559, column 9)
              _thenTypes =
                  ({-# LINE 559 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _casesIthenTypes ++ maybe [] ((:[]) . Just) _elsIupType
                   {-# LINE 14358 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 583, column 9)
              _whent =
                  ({-# LINE 583 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   do
                   wt <- mapM (maybe (Left []) Right) $ concat _whenTypes
                   vt <- maybe (Left []) Right _valueIupType
                   resolveResultSetTypeExtra _lhsIcat (vt : wt)
                   {-# LINE 14367 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 588, column 9)
              _tpe =
                  ({-# LINE 588 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   do
                   _ <- _whent
                   tt <- mapM (maybe (Left []) Right) _thenTypes
                   resolveResultSetTypeExtra _lhsIcat tt
                   {-# LINE 14376 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 593, column 9)
              _casesOwhenExpectedType =
                  ({-# LINE 593 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _whent
                   {-# LINE 14382 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 594, column 9)
              _valueOexpectedType =
                  ({-# LINE 594 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _whent
                   {-# LINE 14388 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 595, column 9)
              _valueOexpectedCast =
                  ({-# LINE 595 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 14394 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 596, column 9)
              _casesOthenExpectedType =
                  ({-# LINE 596 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 14400 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 597, column 9)
              _elsOexpectedType =
                  ({-# LINE 597 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 14406 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 598, column 9)
              _elsOexpectedCast =
                  ({-# LINE 598 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   True
                   {-# LINE 14412 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CaseSimple _annIannotatedTree _valueIannotatedTree _casesIannotatedTree _elsIannotatedTree
                   {-# LINE 14418 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CaseSimple _annIoriginalTree _valueIoriginalTree _casesIoriginalTree _elsIoriginalTree
                   {-# LINE 14424 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 14430 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 14436 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 14442 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 14448 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _valueOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 14454 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _valueOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 14460 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _valueOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 14466 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _valueOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 14472 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _valueOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 14478 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 14484 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOdownEnv =
                  ({-# LINE 553 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 14490 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 14496 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 14502 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 14508 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 14514 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 14520 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 14526 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 14532 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _valueIannotatedTree,_valueIcolExprs,_valueIoriginalTree,_valueIupType) =
                  value_ _valueOassignmentCastContext _valueOcat _valueOdownEnv _valueOexpectedCast _valueOexpectedType _valueOflags _valueOimCast _valueOodbcFunction
              ( _casesIannotatedTree,_casesIoriginalTree,_casesIthenTypes,_casesIupTypes,_casesIwhenTypes) =
                  cases_ _casesOcat _casesOdownEnv _casesOflags _casesOimCast _casesOthenExpectedType _casesOwhenExpectedType
              ( _elsIannotatedTree,_elsIoriginalTree,_elsIupType) =
                  els_ _elsOassignmentCastContext _elsOcat _elsOdownEnv _elsOexpectedCast _elsOexpectedType _elsOflags _elsOimCast
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_Parens :: T_Annotation ->
                         T_ScalarExpr ->
                         T_ScalarExpr
_sem_ScalarExpr_Parens ann_ ex_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _exOodbcFunction :: Bool
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _exOassignmentCastContext :: Bool
              _exOcat :: Catalog
              _exOdownEnv :: Environment
              _exOexpectedCast :: Bool
              _exOexpectedType :: (Maybe TypeExtra)
              _exOflags :: TypeCheckFlags
              _exOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exIannotatedTree :: ScalarExpr
              _exIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exIoriginalTree :: ScalarExpr
              _exIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 14597 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 14603 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 14609 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 14615 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 14626 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 14632 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 181, column 14)
              _exOodbcFunction =
                  ({-# LINE 181 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 14638 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 614, column 5)
              _tpe =
                  ({-# LINE 614 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right _exIupType
                   {-# LINE 14644 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Parens _annIannotatedTree _exIannotatedTree
                   {-# LINE 14650 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Parens _annIoriginalTree _exIoriginalTree
                   {-# LINE 14656 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 14662 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 14668 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 14674 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 14680 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 14686 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 14692 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 14698 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOexpectedCast =
                  ({-# LINE 111 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIexpectedCast
                   {-# LINE 14704 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOexpectedType =
                  ({-# LINE 110 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIexpectedType
                   {-# LINE 14710 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 14716 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 14722 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exIannotatedTree,_exIcolExprs,_exIoriginalTree,_exIupType) =
                  ex_ _exOassignmentCastContext _exOcat _exOdownEnv _exOexpectedCast _exOexpectedType _exOflags _exOimCast _exOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_InPredicate :: T_Annotation ->
                              T_ScalarExpr ->
                              Bool ->
                              T_InList ->
                              T_ScalarExpr
_sem_ScalarExpr_InPredicate ann_ expr_ i_ list_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _exprOodbcFunction :: Bool
              _rt :: (Either [TypeError] TypeExtra)
              _listOexpectedType :: (Maybe TypeExtra)
              _exprOexpectedType :: (Maybe TypeExtra)
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _exprOassignmentCastContext :: Bool
              _exprOcat :: Catalog
              _exprOdownEnv :: Environment
              _exprOexpectedCast :: Bool
              _exprOflags :: TypeCheckFlags
              _exprOimCast :: (Maybe TypeExtra)
              _listOcat :: Catalog
              _listOdownEnv :: Environment
              _listOexpectedCast :: Bool
              _listOflags :: TypeCheckFlags
              _listOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exprIannotatedTree :: ScalarExpr
              _exprIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exprIoriginalTree :: ScalarExpr
              _exprIupType :: (Maybe TypeExtra)
              _listIannotatedTree :: InList
              _listIlistType :: (Either [TypeError] TypeExtra)
              _listIoriginalTree :: InList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 14795 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 14801 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 14807 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 14813 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 14824 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 14830 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 180, column 19)
              _exprOodbcFunction =
                  ({-# LINE 180 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 14836 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 668, column 9)
              _rt =
                  ({-# LINE 668 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   do
                   lt <- _listIlistType
                   expt <- maybe (Left []) Right _exprIupType
                   resolveResultSetTypeExtra _lhsIcat [expt, lt]
                   {-# LINE 14845 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 672, column 9)
              _tpe =
                  ({-# LINE 672 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   do
                   r <- _rt
                   bt <- ScalarType <$> _dialectTypeName     "boolean"
                   return $ TypeExtra bt Nothing Nothing $ teNullable r
                   {-# LINE 14854 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 676, column 9)
              _listOexpectedType =
                  ({-# LINE 676 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _rt
                   {-# LINE 14860 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 677, column 9)
              _exprOexpectedType =
                  ({-# LINE 677 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _rt
                   {-# LINE 14866 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   InPredicate _annIannotatedTree _exprIannotatedTree i_ _listIannotatedTree
                   {-# LINE 14872 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   InPredicate _annIoriginalTree _exprIoriginalTree i_ _listIoriginalTree
                   {-# LINE 14878 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 14884 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 14890 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 14896 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 14902 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 14908 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 14914 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 14920 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOexpectedCast =
                  ({-# LINE 111 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIexpectedCast
                   {-# LINE 14926 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 14932 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 14938 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _listOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 14944 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _listOdownEnv =
                  ({-# LINE 215 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 14950 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _listOexpectedCast =
                  ({-# LINE 661 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIexpectedCast
                   {-# LINE 14956 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _listOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 14962 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _listOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 14968 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exprIannotatedTree,_exprIcolExprs,_exprIoriginalTree,_exprIupType) =
                  expr_ _exprOassignmentCastContext _exprOcat _exprOdownEnv _exprOexpectedCast _exprOexpectedType _exprOflags _exprOimCast _exprOodbcFunction
              ( _listIannotatedTree,_listIlistType,_listIoriginalTree) =
                  list_ _listOcat _listOdownEnv _listOexpectedCast _listOexpectedType _listOflags _listOimCast
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_Exists :: T_Annotation ->
                         T_QueryExpr ->
                         T_ScalarExpr
_sem_ScalarExpr_Exists ann_ sel_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _selOouterDownEnv :: (Maybe Environment)
              _selOexpectedType :: (Maybe [TypeExtra])
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _selOassignmentCastContext :: Bool
              _selOcat :: Catalog
              _selOflags :: TypeCheckFlags
              _selOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _selIannotatedTree :: QueryExpr
              _selIoriginalTree :: QueryExpr
              _selIupType :: (Maybe [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 15028 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 15034 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 15040 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 15046 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 15057 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 15063 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 627, column 9)
              _tpe =
                  ({-# LINE 627 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   (mkTypeExtraNN . ScalarType) <$> (_dialectTypeName     "boolean")
                   {-# LINE 15069 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 649, column 9)
              _selOouterDownEnv =
                  ({-# LINE 649 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Just _lhsIdownEnv
                   {-# LINE 15075 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 651, column 9)
              _selOexpectedType =
                  ({-# LINE 651 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   liftM (map snd) _selIupType
                   {-# LINE 15081 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Exists _annIannotatedTree _selIannotatedTree
                   {-# LINE 15087 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Exists _annIoriginalTree _selIoriginalTree
                   {-# LINE 15093 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 15099 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 15105 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 15111 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 15117 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 15123 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 15129 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 15135 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 15141 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _selIannotatedTree,_selIoriginalTree,_selIupType) =
                  sel_ _selOassignmentCastContext _selOcat _selOexpectedType _selOflags _selOimCast _selOouterDownEnv
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_ScalarSubQuery :: T_Annotation ->
                                 T_QueryExpr ->
                                 T_ScalarExpr
_sem_ScalarExpr_ScalarSubQuery ann_ sel_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _selOouterDownEnv :: (Maybe Environment)
              _selOexpectedType :: (Maybe [TypeExtra])
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _selOassignmentCastContext :: Bool
              _selOcat :: Catalog
              _selOflags :: TypeCheckFlags
              _selOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _selIannotatedTree :: QueryExpr
              _selIoriginalTree :: QueryExpr
              _selIupType :: (Maybe [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 15199 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 15205 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 15211 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 15217 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 15228 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 15234 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 637, column 9)
              _tpe =
                  ({-# LINE 637 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   do
                   selType <- maybe (Left []) Right _selIupType
                   case length selType of
                     0 -> Left [InternalError "no columns in scalar subquery?"]
                     1 -> Right $ snd $ head selType
                     _ -> Right $ mkTypeExtra $ AnonymousCompositeType
                             $ map (teType . snd) selType
                   {-# LINE 15246 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 647, column 9)
              _selOouterDownEnv =
                  ({-# LINE 647 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Just _lhsIdownEnv
                   {-# LINE 15252 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 651, column 9)
              _selOexpectedType =
                  ({-# LINE 651 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   liftM (map snd) _selIupType
                   {-# LINE 15258 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ScalarSubQuery _annIannotatedTree _selIannotatedTree
                   {-# LINE 15264 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ScalarSubQuery _annIoriginalTree _selIoriginalTree
                   {-# LINE 15270 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 15276 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 15282 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 15288 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 15294 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 15300 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 15306 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 15312 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 15318 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _selIannotatedTree,_selIoriginalTree,_selIupType) =
                  sel_ _selOassignmentCastContext _selOcat _selOexpectedType _selOflags _selOimCast _selOouterDownEnv
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_LiftApp :: T_Annotation ->
                          T_Name ->
                          LiftFlavour ->
                          T_ScalarExprList ->
                          T_ScalarExpr
_sem_ScalarExpr_LiftApp ann_ oper_ flav_ args_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _argsOexpectedCast :: Bool
              _argsOexpectedTypes :: ([TypeExtra])
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _operOcat :: Catalog
              _operOflags :: TypeCheckFlags
              _operOimCast :: (Maybe TypeExtra)
              _operOtpe :: (Either [TypeError] TypeExtra)
              _argsOassignmentCastContext :: Bool
              _argsOcat :: Catalog
              _argsOdownEnv :: Environment
              _argsOflags :: TypeCheckFlags
              _argsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _operIannotatedTree :: Name
              _operIoriginalTree :: Name
              _argsIannotatedTree :: ScalarExprList
              _argsIoriginalTree :: ScalarExprList
              _argsIupTypes :: ([Maybe TypeExtra])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 15385 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 15391 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 15397 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 15403 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 15414 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 15420 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 454, column 9)
              _argsOexpectedCast =
                  ({-# LINE 454 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 15426 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 734, column 9)
              _tpe =
                  ({-# LINE 734 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Left []
                   {-# LINE 15432 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 771, column 13)
              _argsOexpectedTypes =
                  ({-# LINE 771 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   []
                   {-# LINE 15438 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   LiftApp _annIannotatedTree _operIannotatedTree flav_ _argsIannotatedTree
                   {-# LINE 15444 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   LiftApp _annIoriginalTree _operIoriginalTree flav_ _argsIoriginalTree
                   {-# LINE 15450 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 15456 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 15462 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 15468 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 15474 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _operOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 15480 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _operOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 15486 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _operOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 15492 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (from local)
              _operOtpe =
                  ({-# LINE 46 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   _tpe
                   {-# LINE 15498 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 15504 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 15510 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOdownEnv =
                  ({-# LINE 189 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 15516 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 15522 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 15528 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _operIannotatedTree,_operIoriginalTree) =
                  oper_ _operOcat _operOflags _operOimCast _operOtpe
              ( _argsIannotatedTree,_argsIoriginalTree,_argsIupTypes) =
                  args_ _argsOassignmentCastContext _argsOcat _argsOdownEnv _argsOexpectedCast _argsOexpectedTypes _argsOflags _argsOimCast
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_OdbcLiteral :: T_Annotation ->
                              OdbcLiteralType ->
                              String ->
                              T_ScalarExpr
_sem_ScalarExpr_OdbcLiteral ann_ olt_ val_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 15580 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 15586 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 15592 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 15598 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 15609 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 15615 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 306, column 10)
              _tpe =
                  ({-# LINE 306 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case olt_ of
                     OLDate -> (mkTypeExtra . ScalarType) <$> _dialectTypeName     "date"
                     OLTime -> (mkTypeExtra . ScalarType) <$> _dialectTypeName     "time"
                     OLTimestamp -> (mkTypeExtra . ScalarType) <$> _dialectTypeName     "timestamp"
                   {-# LINE 15624 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   OdbcLiteral _annIannotatedTree olt_ val_
                   {-# LINE 15630 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   OdbcLiteral _annIoriginalTree olt_ val_
                   {-# LINE 15636 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 15642 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 15648 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 15654 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 15660 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_OdbcFunc :: T_Annotation ->
                           T_ScalarExpr ->
                           T_ScalarExpr
_sem_ScalarExpr_OdbcFunc ann_ ex_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe TypeExtra)
              _annOimCast :: (Maybe TypeExtra)
              _dialectTypeName :: (Text -> Either [TypeError] Text)
              _exOodbcFunction :: Bool
              _exOcat :: Catalog
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _exOassignmentCastContext :: Bool
              _exOdownEnv :: Environment
              _exOexpectedCast :: Bool
              _exOexpectedType :: (Maybe TypeExtra)
              _exOflags :: TypeCheckFlags
              _exOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exIannotatedTree :: ScalarExpr
              _exIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exIoriginalTree :: ScalarExpr
              _exIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 42, column 7)
              _lhsOcolExprs =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   let a = _annIoriginalTree
                       doStar is =
                         map (\((q,n),t) ->
                           let a' = a {anType = Just t}
                           in (Nmc $ T.unpack n, Just t,
                               Identifier a' $ Name a'
                                             $ [Nmc q' | let q' = T.unpack q, not $ null q']
                                               ++ [Nmc $ T.unpack n])
                           ) is
                   in case _originalTree of
                       Star _ | Right is <- E.envExpandStar Nothing _lhsIdownEnv ->
                          doStar is
                       QStar _ q | Right is <- E.envExpandStar (Just q) _lhsIdownEnv ->
                          doStar is
                       _ ->
                              [(columnName _originalTree,_upType,_annotatedTree)]
                   {-# LINE 15719 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 35, column 9)
              _annOtpe =
                  ({-# LINE 35 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _tpe
                   {-# LINE 15725 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 36, column 9)
              _upType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 15731 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 37, column 9)
              _lhsOupType =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _upType
                   {-# LINE 15737 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 38, column 9)
              _annOimCast =
                  ({-# LINE 38 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _upType     of
                      Nothing -> _lhsIexpectedType
                      Just upType -> do
                          expType <- _lhsIexpectedType
                          guard $ needsImplicitCast _lhsIexpectedCast upType expType
                          return $ implicitCastType _lhsIexpectedCast upType expType
                   {-# LINE 15748 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 45, column 9)
              _dialectTypeName =
                  ({-# LINE 45 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   maybe (Left []) Right . ansiTypeNameToDialect (tcfDialect _lhsIflags)
                   {-# LINE 15754 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 182, column 16)
              _exOodbcFunction =
                  ({-# LINE 182 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   True
                   {-# LINE 15760 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 312, column 10)
              _exOcat =
                  ({-# LINE 312 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   id _lhsIcat
                   {-# LINE 15766 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 313, column 10)
              _tpe =
                  ({-# LINE 313 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _exIoriginalTree of
                     Extract {} -> maybe (Left []) Right _exIupType
                     App {} -> maybe (Left []) Right _exIupType
                     _ -> Left [OdbcFuncBadContent]
                   {-# LINE 15775 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   OdbcFunc _annIannotatedTree _exIannotatedTree
                   {-# LINE 15781 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   OdbcFunc _annIoriginalTree _exIoriginalTree
                   {-# LINE 15787 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 15793 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 15799 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 15805 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 15811 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 15817 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 15823 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOexpectedCast =
                  ({-# LINE 111 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIexpectedCast
                   {-# LINE 15829 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOexpectedType =
                  ({-# LINE 110 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIexpectedType
                   {-# LINE 15835 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 15841 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 15847 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exIannotatedTree,_exIcolExprs,_exIoriginalTree,_exIupType) =
                  ex_ _exOassignmentCastContext _exOcat _exOdownEnv _exOexpectedCast _exOexpectedType _exOflags _exOimCast _exOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExpr_AntiScalarExpr :: String ->
                                 T_ScalarExpr
_sem_ScalarExpr_AntiScalarExpr string_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast
       _lhsIodbcFunction ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _lhsOupType :: (Maybe TypeExtra)
              _lhsOannotatedTree :: ScalarExpr
              _lhsOoriginalTree :: ScalarExpr
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 232, column 21)
              _lhsOcolExprs =
                  ({-# LINE 232 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   [(Nmc "?anti?",Nothing,_originalTree)]
                   {-# LINE 15873 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 102, column 9)
              _lhsOupType =
                  ({-# LINE 102 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 15879 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 734, column 9)
              _tpe =
                  ({-# LINE 734 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Left []
                   {-# LINE 15885 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AntiScalarExpr string_
                   {-# LINE 15891 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AntiScalarExpr string_
                   {-# LINE 15897 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 15903 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 15909 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupType)))
-- ScalarExprDirectionPair -------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         downEnv              : Environment
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : ScalarExprDirectionPair 
         originalTree         : ScalarExprDirectionPair 
   alternatives:
      alternative Tuple:
         child x1             : ScalarExpr 
         child x2             : {Direction}
         child x3             : {NullsOrder}
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type ScalarExprDirectionPair = ( ScalarExpr,(Direction),(NullsOrder))
-- cata
_sem_ScalarExprDirectionPair :: ScalarExprDirectionPair ->
                               T_ScalarExprDirectionPair
_sem_ScalarExprDirectionPair ( x1,x2,x3) =
    (_sem_ScalarExprDirectionPair_Tuple (_sem_ScalarExpr x1) x2 x3)
-- semantic domain
type T_ScalarExprDirectionPair = Catalog ->
                                 Environment ->
                                 TypeCheckFlags ->
                                 (Maybe TypeExtra) ->
                                 ( ScalarExprDirectionPair,ScalarExprDirectionPair)
data Inh_ScalarExprDirectionPair = Inh_ScalarExprDirectionPair {_cat_Inh_ScalarExprDirectionPair :: Catalog,_downEnv_Inh_ScalarExprDirectionPair :: Environment,_flags_Inh_ScalarExprDirectionPair :: TypeCheckFlags,_imCast_Inh_ScalarExprDirectionPair :: (Maybe TypeExtra)}
data Syn_ScalarExprDirectionPair = Syn_ScalarExprDirectionPair {_annotatedTree_Syn_ScalarExprDirectionPair :: ScalarExprDirectionPair,_originalTree_Syn_ScalarExprDirectionPair :: ScalarExprDirectionPair}
_wrap_ScalarExprDirectionPair :: T_ScalarExprDirectionPair ->
                                Inh_ScalarExprDirectionPair ->
                                Syn_ScalarExprDirectionPair
_wrap_ScalarExprDirectionPair sem (Inh_ScalarExprDirectionPair _lhsIcat _lhsIdownEnv _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIdownEnv _lhsIflags _lhsIimCast
     in  (Syn_ScalarExprDirectionPair _lhsOannotatedTree _lhsOoriginalTree))
_sem_ScalarExprDirectionPair_Tuple :: T_ScalarExpr ->
                                     Direction ->
                                     NullsOrder ->
                                     T_ScalarExprDirectionPair
_sem_ScalarExprDirectionPair_Tuple x1_ x2_ x3_ =
    (\ _lhsIcat
       _lhsIdownEnv
       _lhsIflags
       _lhsIimCast ->
         (let _x1OexpectedCast :: Bool
              _x1OodbcFunction :: Bool
              _x1OexpectedType :: (Maybe TypeExtra)
              _x1OassignmentCastContext :: Bool
              _lhsOannotatedTree :: ScalarExprDirectionPair
              _lhsOoriginalTree :: ScalarExprDirectionPair
              _x1Ocat :: Catalog
              _x1OdownEnv :: Environment
              _x1Oflags :: TypeCheckFlags
              _x1OimCast :: (Maybe TypeExtra)
              _x1IannotatedTree :: ScalarExpr
              _x1IcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _x1IoriginalTree :: ScalarExpr
              _x1IupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 92, column 37)
              _x1OexpectedCast =
                  ({-# LINE 92 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 15979 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 152, column 13)
              _x1OodbcFunction =
                  ({-# LINE 152 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 15985 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 757, column 11)
              _x1OexpectedType =
                  ({-# LINE 757 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Nothing
                   {-# LINE 15991 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 817, column 37)
              _x1OassignmentCastContext =
                  ({-# LINE 817 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 15997 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (_x1IannotatedTree,x2_,x3_)
                   {-# LINE 16003 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (_x1IoriginalTree,x2_,x3_)
                   {-# LINE 16009 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 16015 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 16021 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1Ocat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 16027 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1OdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 16033 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1Oflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 16039 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1OimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 16045 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _x1IannotatedTree,_x1IcolExprs,_x1IoriginalTree,_x1IupType) =
                  x1_ _x1OassignmentCastContext _x1Ocat _x1OdownEnv _x1OexpectedCast _x1OexpectedType _x1Oflags _x1OimCast _x1OodbcFunction
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- ScalarExprDirectionPairList ---------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         downEnv              : Environment
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : ScalarExprDirectionPairList 
         originalTree         : ScalarExprDirectionPairList 
   alternatives:
      alternative Cons:
         child hd             : ScalarExprDirectionPair 
         child tl             : ScalarExprDirectionPairList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type ScalarExprDirectionPairList = [ScalarExprDirectionPair]
-- cata
_sem_ScalarExprDirectionPairList :: ScalarExprDirectionPairList ->
                                   T_ScalarExprDirectionPairList
_sem_ScalarExprDirectionPairList list =
    (Prelude.foldr _sem_ScalarExprDirectionPairList_Cons _sem_ScalarExprDirectionPairList_Nil (Prelude.map _sem_ScalarExprDirectionPair list))
-- semantic domain
type T_ScalarExprDirectionPairList = Catalog ->
                                     Environment ->
                                     TypeCheckFlags ->
                                     (Maybe TypeExtra) ->
                                     ( ScalarExprDirectionPairList,ScalarExprDirectionPairList)
data Inh_ScalarExprDirectionPairList = Inh_ScalarExprDirectionPairList {_cat_Inh_ScalarExprDirectionPairList :: Catalog,_downEnv_Inh_ScalarExprDirectionPairList :: Environment,_flags_Inh_ScalarExprDirectionPairList :: TypeCheckFlags,_imCast_Inh_ScalarExprDirectionPairList :: (Maybe TypeExtra)}
data Syn_ScalarExprDirectionPairList = Syn_ScalarExprDirectionPairList {_annotatedTree_Syn_ScalarExprDirectionPairList :: ScalarExprDirectionPairList,_originalTree_Syn_ScalarExprDirectionPairList :: ScalarExprDirectionPairList}
_wrap_ScalarExprDirectionPairList :: T_ScalarExprDirectionPairList ->
                                    Inh_ScalarExprDirectionPairList ->
                                    Syn_ScalarExprDirectionPairList
_wrap_ScalarExprDirectionPairList sem (Inh_ScalarExprDirectionPairList _lhsIcat _lhsIdownEnv _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIdownEnv _lhsIflags _lhsIimCast
     in  (Syn_ScalarExprDirectionPairList _lhsOannotatedTree _lhsOoriginalTree))
_sem_ScalarExprDirectionPairList_Cons :: T_ScalarExprDirectionPair ->
                                        T_ScalarExprDirectionPairList ->
                                        T_ScalarExprDirectionPairList
_sem_ScalarExprDirectionPairList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIdownEnv
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: ScalarExprDirectionPairList
              _lhsOoriginalTree :: ScalarExprDirectionPairList
              _hdOcat :: Catalog
              _hdOdownEnv :: Environment
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOdownEnv :: Environment
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: ScalarExprDirectionPair
              _hdIoriginalTree :: ScalarExprDirectionPair
              _tlIannotatedTree :: ScalarExprDirectionPairList
              _tlIoriginalTree :: ScalarExprDirectionPairList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 16119 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 16125 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 16131 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 16137 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 16143 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOdownEnv =
                  ({-# LINE 215 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 16149 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 16155 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 16161 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 16167 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOdownEnv =
                  ({-# LINE 215 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 16173 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 16179 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 16185 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree) =
                  hd_ _hdOcat _hdOdownEnv _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOdownEnv _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_ScalarExprDirectionPairList_Nil :: T_ScalarExprDirectionPairList
_sem_ScalarExprDirectionPairList_Nil =
    (\ _lhsIcat
       _lhsIdownEnv
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: ScalarExprDirectionPairList
              _lhsOoriginalTree :: ScalarExprDirectionPairList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 16204 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 16210 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 16216 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 16222 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- ScalarExprList ----------------------------------------------
{-
   visit 0:
      inherited attributes:
         assignmentCastContext : Bool
         cat                  : Catalog
         downEnv              : Environment
         expectedCast         : Bool
         expectedTypes        : [TypeExtra]
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : ScalarExprList 
         originalTree         : ScalarExprList 
         upTypes              : [Maybe TypeExtra]
   alternatives:
      alternative Cons:
         child hd             : ScalarExpr 
         child tl             : ScalarExprList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type ScalarExprList = [ScalarExpr]
-- cata
_sem_ScalarExprList :: ScalarExprList ->
                      T_ScalarExprList
_sem_ScalarExprList list =
    (Prelude.foldr _sem_ScalarExprList_Cons _sem_ScalarExprList_Nil (Prelude.map _sem_ScalarExpr list))
-- semantic domain
type T_ScalarExprList = Bool ->
                        Catalog ->
                        Environment ->
                        Bool ->
                        ([TypeExtra]) ->
                        TypeCheckFlags ->
                        (Maybe TypeExtra) ->
                        ( ScalarExprList,ScalarExprList,([Maybe TypeExtra]))
data Inh_ScalarExprList = Inh_ScalarExprList {_assignmentCastContext_Inh_ScalarExprList :: Bool,_cat_Inh_ScalarExprList :: Catalog,_downEnv_Inh_ScalarExprList :: Environment,_expectedCast_Inh_ScalarExprList :: Bool,_expectedTypes_Inh_ScalarExprList :: ([TypeExtra]),_flags_Inh_ScalarExprList :: TypeCheckFlags,_imCast_Inh_ScalarExprList :: (Maybe TypeExtra)}
data Syn_ScalarExprList = Syn_ScalarExprList {_annotatedTree_Syn_ScalarExprList :: ScalarExprList,_originalTree_Syn_ScalarExprList :: ScalarExprList,_upTypes_Syn_ScalarExprList :: ([Maybe TypeExtra])}
_wrap_ScalarExprList :: T_ScalarExprList ->
                       Inh_ScalarExprList ->
                       Syn_ScalarExprList
_wrap_ScalarExprList sem (Inh_ScalarExprList _lhsIassignmentCastContext _lhsIcat _lhsIdownEnv _lhsIexpectedCast _lhsIexpectedTypes _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupTypes) = sem _lhsIassignmentCastContext _lhsIcat _lhsIdownEnv _lhsIexpectedCast _lhsIexpectedTypes _lhsIflags _lhsIimCast
     in  (Syn_ScalarExprList _lhsOannotatedTree _lhsOoriginalTree _lhsOupTypes))
_sem_ScalarExprList_Cons :: T_ScalarExpr ->
                           T_ScalarExprList ->
                           T_ScalarExprList
_sem_ScalarExprList_Cons hd_ tl_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedTypes
       _lhsIflags
       _lhsIimCast ->
         (let _hdOodbcFunction :: Bool
              _lhsOupTypes :: ([Maybe TypeExtra])
              _hdOexpectedType :: (Maybe TypeExtra)
              _tlOexpectedTypes :: ([TypeExtra])
              _hdOexpectedCast :: Bool
              _lhsOannotatedTree :: ScalarExprList
              _lhsOoriginalTree :: ScalarExprList
              _hdOassignmentCastContext :: Bool
              _hdOcat :: Catalog
              _hdOdownEnv :: Environment
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOassignmentCastContext :: Bool
              _tlOcat :: Catalog
              _tlOdownEnv :: Environment
              _tlOexpectedCast :: Bool
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: ScalarExpr
              _hdIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _hdIoriginalTree :: ScalarExpr
              _hdIupType :: (Maybe TypeExtra)
              _tlIannotatedTree :: ScalarExprList
              _tlIoriginalTree :: ScalarExprList
              _tlIupTypes :: ([Maybe TypeExtra])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 155, column 12)
              _hdOodbcFunction =
                  ({-# LINE 155 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 16315 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 196, column 9)
              _lhsOupTypes =
                  ({-# LINE 196 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _hdIupType : _tlIupTypes
                   {-# LINE 16321 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 197, column 9)
              (_hdOexpectedType,_tlOexpectedTypes) =
                  ({-# LINE 197 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   case _lhsIexpectedTypes of
                       (x:xs) -> (Just x,xs)
                       [] -> (Nothing,[])
                   {-# LINE 16329 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 201, column 9)
              _hdOexpectedCast =
                  ({-# LINE 201 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIexpectedCast
                   {-# LINE 16335 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 16341 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 16347 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 16353 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 16359 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 16365 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 16371 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 16377 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 16383 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 16389 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 16395 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 16401 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOdownEnv =
                  ({-# LINE 189 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 16407 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOexpectedCast =
                  ({-# LINE 192 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIexpectedCast
                   {-# LINE 16413 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 16419 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 16425 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIcolExprs,_hdIoriginalTree,_hdIupType) =
                  hd_ _hdOassignmentCastContext _hdOcat _hdOdownEnv _hdOexpectedCast _hdOexpectedType _hdOflags _hdOimCast _hdOodbcFunction
              ( _tlIannotatedTree,_tlIoriginalTree,_tlIupTypes) =
                  tl_ _tlOassignmentCastContext _tlOcat _tlOdownEnv _tlOexpectedCast _tlOexpectedTypes _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupTypes)))
_sem_ScalarExprList_Nil :: T_ScalarExprList
_sem_ScalarExprList_Nil =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedTypes
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOupTypes :: ([Maybe TypeExtra])
              _lhsOannotatedTree :: ScalarExprList
              _lhsOoriginalTree :: ScalarExprList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 202, column 11)
              _lhsOupTypes =
                  ({-# LINE 202 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   []
                   {-# LINE 16448 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 16454 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 16460 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 16466 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 16472 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupTypes)))
-- ScalarExprListList ------------------------------------------
{-
   visit 0:
      inherited attributes:
         assignmentCastContext : Bool
         cat                  : Catalog
         downEnv              : Environment
         expectedCast         : Bool
         expectedType         : Maybe [TypeExtra]
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : ScalarExprListList 
         originalTree         : ScalarExprListList 
         upType               : Either [TypeError] [(Text,TypeExtra)]
   alternatives:
      alternative Cons:
         child hd             : ScalarExprTransposedList 
         child tl             : ScalarExprListList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type ScalarExprListList = [ScalarExprTransposedList]
-- cata
_sem_ScalarExprListList :: ScalarExprListList ->
                          T_ScalarExprListList
_sem_ScalarExprListList list =
    (Prelude.foldr _sem_ScalarExprListList_Cons _sem_ScalarExprListList_Nil (Prelude.map _sem_ScalarExprTransposedList list))
-- semantic domain
type T_ScalarExprListList = Bool ->
                            Catalog ->
                            Environment ->
                            Bool ->
                            (Maybe [TypeExtra]) ->
                            TypeCheckFlags ->
                            (Maybe TypeExtra) ->
                            ( ScalarExprListList,ScalarExprListList,(Either [TypeError] [(Text,TypeExtra)]))
data Inh_ScalarExprListList = Inh_ScalarExprListList {_assignmentCastContext_Inh_ScalarExprListList :: Bool,_cat_Inh_ScalarExprListList :: Catalog,_downEnv_Inh_ScalarExprListList :: Environment,_expectedCast_Inh_ScalarExprListList :: Bool,_expectedType_Inh_ScalarExprListList :: (Maybe [TypeExtra]),_flags_Inh_ScalarExprListList :: TypeCheckFlags,_imCast_Inh_ScalarExprListList :: (Maybe TypeExtra)}
data Syn_ScalarExprListList = Syn_ScalarExprListList {_annotatedTree_Syn_ScalarExprListList :: ScalarExprListList,_originalTree_Syn_ScalarExprListList :: ScalarExprListList,_upType_Syn_ScalarExprListList :: (Either [TypeError] [(Text,TypeExtra)])}
_wrap_ScalarExprListList :: T_ScalarExprListList ->
                           Inh_ScalarExprListList ->
                           Syn_ScalarExprListList
_wrap_ScalarExprListList sem (Inh_ScalarExprListList _lhsIassignmentCastContext _lhsIcat _lhsIdownEnv _lhsIexpectedCast _lhsIexpectedType _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupType) = sem _lhsIassignmentCastContext _lhsIcat _lhsIdownEnv _lhsIexpectedCast _lhsIexpectedType _lhsIflags _lhsIimCast
     in  (Syn_ScalarExprListList _lhsOannotatedTree _lhsOoriginalTree _lhsOupType))
_sem_ScalarExprListList_Cons :: T_ScalarExprTransposedList ->
                               T_ScalarExprListList ->
                               T_ScalarExprListList
_sem_ScalarExprListList_Cons hd_ tl_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOupType :: (Either [TypeError] [(Text,TypeExtra)])
              _hdOexpectedCast :: Bool
              _tlOexpectedCast :: Bool
              _lhsOannotatedTree :: ScalarExprListList
              _lhsOoriginalTree :: ScalarExprListList
              _hdOcat :: Catalog
              _hdOexpectedType :: (Maybe [TypeExtra])
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOassignmentCastContext :: Bool
              _tlOcat :: Catalog
              _tlOdownEnv :: Environment
              _tlOexpectedType :: (Maybe [TypeExtra])
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: ScalarExprTransposedList
              _hdIoriginalTree :: ScalarExprTransposedList
              _hdIupType :: (Maybe [TypeExtra])
              _tlIannotatedTree :: ScalarExprListList
              _tlIoriginalTree :: ScalarExprListList
              _tlIupType :: (Either [TypeError] [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 191, column 9)
              _lhsOupType =
                  ({-# LINE 191 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   do
                   a <- maybe (Left [InternalError "type error in VALUES clause"]) Right _hdIupType
                   b <- _tlIupType
                   unless (not $ null a) $ Left [InternalError "empty row in VALUES clause"]
                   let a' = map ("",) a
                       itError = Left [IncompatibleUnionTypes (CompositeType a') (CompositeType b)]
                   unless (null b || length a == length b) itError
                   if null b
                     then return $ zip [T.pack ("values%" ++ show k) | k <- [(0::Int)..]] a
                     else
                       do
                       let uts = zipWithM (\te1 (_,te2) -> resolveResultSetTypeExtra _lhsIcat [te1,te2])
                                     a b
                       case uts of
                         Left{} -> itError
                         Right uts' -> return $ zipWith (\(n,_) te -> (n,te)) b uts'
                   {-# LINE 16576 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 209, column 9)
              _hdOexpectedCast =
                  ({-# LINE 209 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIexpectedCast
                   {-# LINE 16582 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 210, column 9)
              _tlOexpectedCast =
                  ({-# LINE 210 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIexpectedCast
                   {-# LINE 16588 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 16594 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 16600 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 16606 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 16612 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 16618 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOexpectedType =
                  ({-# LINE 169 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIexpectedType
                   {-# LINE 16624 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 16630 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 16636 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 16642 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 16648 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOdownEnv =
                  ({-# LINE 183 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 16654 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOexpectedType =
                  ({-# LINE 186 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIexpectedType
                   {-# LINE 16660 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 16666 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 16672 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree,_hdIupType) =
                  hd_ _hdOcat _hdOexpectedCast _hdOexpectedType _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree,_tlIupType) =
                  tl_ _tlOassignmentCastContext _tlOcat _tlOdownEnv _tlOexpectedCast _tlOexpectedType _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExprListList_Nil :: T_ScalarExprListList
_sem_ScalarExprListList_Nil =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOupType :: (Either [TypeError] [(Text,TypeExtra)])
              _lhsOannotatedTree :: ScalarExprListList
              _lhsOoriginalTree :: ScalarExprListList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 211, column 11)
              _lhsOupType =
                  ({-# LINE 211 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   Right []
                   {-# LINE 16695 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 16701 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 16707 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 16713 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 16719 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupType)))
-- ScalarExprListStatementListTriple ---------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : ScalarExprListStatementListTriple 
         originalTree         : ScalarExprListStatementListTriple 
   alternatives:
      alternative Tuple:
         child x1             : ScalarExprList 
         child x2             : StatementList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type ScalarExprListStatementListTriple = ( ScalarExprList,StatementList)
-- cata
_sem_ScalarExprListStatementListTriple :: ScalarExprListStatementListTriple ->
                                         T_ScalarExprListStatementListTriple
_sem_ScalarExprListStatementListTriple ( x1,x2) =
    (_sem_ScalarExprListStatementListTriple_Tuple (_sem_ScalarExprList x1) (_sem_StatementList x2))
-- semantic domain
type T_ScalarExprListStatementListTriple = Catalog ->
                                           TypeCheckFlags ->
                                           (Maybe TypeExtra) ->
                                           ( ScalarExprListStatementListTriple,ScalarExprListStatementListTriple)
data Inh_ScalarExprListStatementListTriple = Inh_ScalarExprListStatementListTriple {_cat_Inh_ScalarExprListStatementListTriple :: Catalog,_flags_Inh_ScalarExprListStatementListTriple :: TypeCheckFlags,_imCast_Inh_ScalarExprListStatementListTriple :: (Maybe TypeExtra)}
data Syn_ScalarExprListStatementListTriple = Syn_ScalarExprListStatementListTriple {_annotatedTree_Syn_ScalarExprListStatementListTriple :: ScalarExprListStatementListTriple,_originalTree_Syn_ScalarExprListStatementListTriple :: ScalarExprListStatementListTriple}
_wrap_ScalarExprListStatementListTriple :: T_ScalarExprListStatementListTriple ->
                                          Inh_ScalarExprListStatementListTriple ->
                                          Syn_ScalarExprListStatementListTriple
_wrap_ScalarExprListStatementListTriple sem (Inh_ScalarExprListStatementListTriple _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_ScalarExprListStatementListTriple _lhsOannotatedTree _lhsOoriginalTree))
_sem_ScalarExprListStatementListTriple_Tuple :: T_ScalarExprList ->
                                               T_StatementList ->
                                               T_ScalarExprListStatementListTriple
_sem_ScalarExprListStatementListTriple_Tuple x1_ x2_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _x1OdownEnv :: Environment
              _x1OexpectedCast :: Bool
              _x1OexpectedTypes :: ([TypeExtra])
              _x1OassignmentCastContext :: Bool
              _lhsOannotatedTree :: ScalarExprListStatementListTriple
              _lhsOoriginalTree :: ScalarExprListStatementListTriple
              _x1Ocat :: Catalog
              _x1Oflags :: TypeCheckFlags
              _x1OimCast :: (Maybe TypeExtra)
              _x2Ocat :: Catalog
              _x2Oflags :: TypeCheckFlags
              _x2OimCast :: (Maybe TypeExtra)
              _x1IannotatedTree :: ScalarExprList
              _x1IoriginalTree :: ScalarExprList
              _x1IupTypes :: ([Maybe TypeExtra])
              _x2IannotatedTree :: StatementList
              _x2IoriginalTree :: StatementList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 93, column 47)
              _x1OdownEnv =
                  ({-# LINE 93 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 16787 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 94, column 47)
              _x1OexpectedCast =
                  ({-# LINE 94 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 16793 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 95, column 47)
              _x1OexpectedTypes =
                  ({-# LINE 95 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   []
                   {-# LINE 16799 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 818, column 47)
              _x1OassignmentCastContext =
                  ({-# LINE 818 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 16805 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (_x1IannotatedTree,_x2IannotatedTree)
                   {-# LINE 16811 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (_x1IoriginalTree,_x2IoriginalTree)
                   {-# LINE 16817 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 16823 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 16829 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1Ocat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 16835 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1Oflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 16841 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1OimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 16847 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x2Ocat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 16853 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x2Oflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 16859 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x2OimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 16865 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _x1IannotatedTree,_x1IoriginalTree,_x1IupTypes) =
                  x1_ _x1OassignmentCastContext _x1Ocat _x1OdownEnv _x1OexpectedCast _x1OexpectedTypes _x1Oflags _x1OimCast
              ( _x2IannotatedTree,_x2IoriginalTree) =
                  x2_ _x2Ocat _x2Oflags _x2OimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- ScalarExprListStatementListTripleList -----------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : ScalarExprListStatementListTripleList 
         originalTree         : ScalarExprListStatementListTripleList 
   alternatives:
      alternative Cons:
         child hd             : ScalarExprListStatementListTriple 
         child tl             : ScalarExprListStatementListTripleList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type ScalarExprListStatementListTripleList = [ScalarExprListStatementListTriple]
-- cata
_sem_ScalarExprListStatementListTripleList :: ScalarExprListStatementListTripleList ->
                                             T_ScalarExprListStatementListTripleList
_sem_ScalarExprListStatementListTripleList list =
    (Prelude.foldr _sem_ScalarExprListStatementListTripleList_Cons _sem_ScalarExprListStatementListTripleList_Nil (Prelude.map _sem_ScalarExprListStatementListTriple list))
-- semantic domain
type T_ScalarExprListStatementListTripleList = Catalog ->
                                               TypeCheckFlags ->
                                               (Maybe TypeExtra) ->
                                               ( ScalarExprListStatementListTripleList,ScalarExprListStatementListTripleList)
data Inh_ScalarExprListStatementListTripleList = Inh_ScalarExprListStatementListTripleList {_cat_Inh_ScalarExprListStatementListTripleList :: Catalog,_flags_Inh_ScalarExprListStatementListTripleList :: TypeCheckFlags,_imCast_Inh_ScalarExprListStatementListTripleList :: (Maybe TypeExtra)}
data Syn_ScalarExprListStatementListTripleList = Syn_ScalarExprListStatementListTripleList {_annotatedTree_Syn_ScalarExprListStatementListTripleList :: ScalarExprListStatementListTripleList,_originalTree_Syn_ScalarExprListStatementListTripleList :: ScalarExprListStatementListTripleList}
_wrap_ScalarExprListStatementListTripleList :: T_ScalarExprListStatementListTripleList ->
                                              Inh_ScalarExprListStatementListTripleList ->
                                              Syn_ScalarExprListStatementListTripleList
_wrap_ScalarExprListStatementListTripleList sem (Inh_ScalarExprListStatementListTripleList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_ScalarExprListStatementListTripleList _lhsOannotatedTree _lhsOoriginalTree))
_sem_ScalarExprListStatementListTripleList_Cons :: T_ScalarExprListStatementListTriple ->
                                                  T_ScalarExprListStatementListTripleList ->
                                                  T_ScalarExprListStatementListTripleList
_sem_ScalarExprListStatementListTripleList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: ScalarExprListStatementListTripleList
              _lhsOoriginalTree :: ScalarExprListStatementListTripleList
              _hdOcat :: Catalog
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: ScalarExprListStatementListTriple
              _hdIoriginalTree :: ScalarExprListStatementListTriple
              _tlIannotatedTree :: ScalarExprListStatementListTripleList
              _tlIoriginalTree :: ScalarExprListStatementListTripleList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 16936 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 16942 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 16948 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 16954 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 16960 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 16966 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 16972 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 16978 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 16984 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 16990 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree) =
                  hd_ _hdOcat _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_ScalarExprListStatementListTripleList_Nil :: T_ScalarExprListStatementListTripleList
_sem_ScalarExprListStatementListTripleList_Nil =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: ScalarExprListStatementListTripleList
              _lhsOoriginalTree :: ScalarExprListStatementListTripleList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 17008 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 17014 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 17020 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 17026 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- ScalarExprRoot ----------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         downEnv              : Environment
         flags                : TypeCheckFlags
      synthesized attributes:
         annotatedTree        : ScalarExprRoot 
         originalTree         : ScalarExprRoot 
   alternatives:
      alternative ScalarExprRoot:
         child expr           : ScalarExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data ScalarExprRoot = ScalarExprRoot (ScalarExpr)
                    deriving ( Show)
-- cata
_sem_ScalarExprRoot :: ScalarExprRoot ->
                      T_ScalarExprRoot
_sem_ScalarExprRoot (ScalarExprRoot _expr) =
    (_sem_ScalarExprRoot_ScalarExprRoot (_sem_ScalarExpr _expr))
-- semantic domain
type T_ScalarExprRoot = Catalog ->
                        Environment ->
                        TypeCheckFlags ->
                        ( ScalarExprRoot,ScalarExprRoot)
data Inh_ScalarExprRoot = Inh_ScalarExprRoot {_cat_Inh_ScalarExprRoot :: Catalog,_downEnv_Inh_ScalarExprRoot :: Environment,_flags_Inh_ScalarExprRoot :: TypeCheckFlags}
data Syn_ScalarExprRoot = Syn_ScalarExprRoot {_annotatedTree_Syn_ScalarExprRoot :: ScalarExprRoot,_originalTree_Syn_ScalarExprRoot :: ScalarExprRoot}
_wrap_ScalarExprRoot :: T_ScalarExprRoot ->
                       Inh_ScalarExprRoot ->
                       Syn_ScalarExprRoot
_wrap_ScalarExprRoot sem (Inh_ScalarExprRoot _lhsIcat _lhsIdownEnv _lhsIflags) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIdownEnv _lhsIflags
     in  (Syn_ScalarExprRoot _lhsOannotatedTree _lhsOoriginalTree))
_sem_ScalarExprRoot_ScalarExprRoot :: T_ScalarExpr ->
                                     T_ScalarExprRoot
_sem_ScalarExprRoot_ScalarExprRoot expr_ =
    (\ _lhsIcat
       _lhsIdownEnv
       _lhsIflags ->
         (let _exprOexpectedCast :: Bool
              _exprOodbcFunction :: Bool
              _exprOdownEnv :: Environment
              _exprOexpectedType :: (Maybe TypeExtra)
              _exprOassignmentCastContext :: Bool
              _exprOimCast :: (Maybe TypeExtra)
              _lhsOannotatedTree :: ScalarExprRoot
              _lhsOoriginalTree :: ScalarExprRoot
              _exprOcat :: Catalog
              _exprOflags :: TypeCheckFlags
              _exprIannotatedTree :: ScalarExpr
              _exprIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exprIoriginalTree :: ScalarExpr
              _exprIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 96, column 37)
              _exprOexpectedCast =
                  ({-# LINE 96 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 17090 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 158, column 22)
              _exprOodbcFunction =
                  ({-# LINE 158 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 17096 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 236, column 9)
              _exprOdownEnv =
                  ({-# LINE 236 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 17102 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 740, column 20)
              _exprOexpectedType =
                  ({-# LINE 740 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   Nothing
                   {-# LINE 17108 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 819, column 37)
              _exprOassignmentCastContext =
                  ({-# LINE 819 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 17114 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag"(line 136, column 8)
              _exprOimCast =
                  ({-# LINE 136 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Nothing
                   {-# LINE 17120 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ScalarExprRoot _exprIannotatedTree
                   {-# LINE 17126 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ScalarExprRoot _exprIoriginalTree
                   {-# LINE 17132 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 17138 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 17144 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 17150 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 17156 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _exprIannotatedTree,_exprIcolExprs,_exprIoriginalTree,_exprIupType) =
                  expr_ _exprOassignmentCastContext _exprOcat _exprOdownEnv _exprOexpectedCast _exprOexpectedType _exprOflags _exprOimCast _exprOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- ScalarExprStatementListPair ---------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : ScalarExprStatementListPair 
         originalTree         : ScalarExprStatementListPair 
   alternatives:
      alternative Tuple:
         child x1             : ScalarExpr 
         child x2             : StatementList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type ScalarExprStatementListPair = ( ScalarExpr,StatementList)
-- cata
_sem_ScalarExprStatementListPair :: ScalarExprStatementListPair ->
                                   T_ScalarExprStatementListPair
_sem_ScalarExprStatementListPair ( x1,x2) =
    (_sem_ScalarExprStatementListPair_Tuple (_sem_ScalarExpr x1) (_sem_StatementList x2))
-- semantic domain
type T_ScalarExprStatementListPair = Catalog ->
                                     TypeCheckFlags ->
                                     (Maybe TypeExtra) ->
                                     ( ScalarExprStatementListPair,ScalarExprStatementListPair)
data Inh_ScalarExprStatementListPair = Inh_ScalarExprStatementListPair {_cat_Inh_ScalarExprStatementListPair :: Catalog,_flags_Inh_ScalarExprStatementListPair :: TypeCheckFlags,_imCast_Inh_ScalarExprStatementListPair :: (Maybe TypeExtra)}
data Syn_ScalarExprStatementListPair = Syn_ScalarExprStatementListPair {_annotatedTree_Syn_ScalarExprStatementListPair :: ScalarExprStatementListPair,_originalTree_Syn_ScalarExprStatementListPair :: ScalarExprStatementListPair}
_wrap_ScalarExprStatementListPair :: T_ScalarExprStatementListPair ->
                                    Inh_ScalarExprStatementListPair ->
                                    Syn_ScalarExprStatementListPair
_wrap_ScalarExprStatementListPair sem (Inh_ScalarExprStatementListPair _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_ScalarExprStatementListPair _lhsOannotatedTree _lhsOoriginalTree))
_sem_ScalarExprStatementListPair_Tuple :: T_ScalarExpr ->
                                         T_StatementList ->
                                         T_ScalarExprStatementListPair
_sem_ScalarExprStatementListPair_Tuple x1_ x2_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _x1OdownEnv :: Environment
              _x1OexpectedCast :: Bool
              _x1OexpectedType :: (Maybe TypeExtra)
              _x1OodbcFunction :: Bool
              _x1OassignmentCastContext :: Bool
              _lhsOannotatedTree :: ScalarExprStatementListPair
              _lhsOoriginalTree :: ScalarExprStatementListPair
              _x1Ocat :: Catalog
              _x1Oflags :: TypeCheckFlags
              _x1OimCast :: (Maybe TypeExtra)
              _x2Ocat :: Catalog
              _x2Oflags :: TypeCheckFlags
              _x2OimCast :: (Maybe TypeExtra)
              _x1IannotatedTree :: ScalarExpr
              _x1IcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _x1IoriginalTree :: ScalarExpr
              _x1IupType :: (Maybe TypeExtra)
              _x2IannotatedTree :: StatementList
              _x2IoriginalTree :: StatementList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 97, column 41)
              _x1OdownEnv =
                  ({-# LINE 97 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 17228 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 98, column 41)
              _x1OexpectedCast =
                  ({-# LINE 98 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 17234 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 99, column 41)
              _x1OexpectedType =
                  ({-# LINE 99 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 17240 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 100, column 41)
              _x1OodbcFunction =
                  ({-# LINE 100 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 17246 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 820, column 41)
              _x1OassignmentCastContext =
                  ({-# LINE 820 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 17252 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (_x1IannotatedTree,_x2IannotatedTree)
                   {-# LINE 17258 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (_x1IoriginalTree,_x2IoriginalTree)
                   {-# LINE 17264 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 17270 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 17276 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1Ocat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 17282 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1Oflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 17288 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x1OimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 17294 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x2Ocat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 17300 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x2Oflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 17306 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _x2OimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 17312 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _x1IannotatedTree,_x1IcolExprs,_x1IoriginalTree,_x1IupType) =
                  x1_ _x1OassignmentCastContext _x1Ocat _x1OdownEnv _x1OexpectedCast _x1OexpectedType _x1Oflags _x1OimCast _x1OodbcFunction
              ( _x2IannotatedTree,_x2IoriginalTree) =
                  x2_ _x2Ocat _x2Oflags _x2OimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- ScalarExprStatementListPairList -----------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : ScalarExprStatementListPairList 
         originalTree         : ScalarExprStatementListPairList 
   alternatives:
      alternative Cons:
         child hd             : ScalarExprStatementListPair 
         child tl             : ScalarExprStatementListPairList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type ScalarExprStatementListPairList = [ScalarExprStatementListPair]
-- cata
_sem_ScalarExprStatementListPairList :: ScalarExprStatementListPairList ->
                                       T_ScalarExprStatementListPairList
_sem_ScalarExprStatementListPairList list =
    (Prelude.foldr _sem_ScalarExprStatementListPairList_Cons _sem_ScalarExprStatementListPairList_Nil (Prelude.map _sem_ScalarExprStatementListPair list))
-- semantic domain
type T_ScalarExprStatementListPairList = Catalog ->
                                         TypeCheckFlags ->
                                         (Maybe TypeExtra) ->
                                         ( ScalarExprStatementListPairList,ScalarExprStatementListPairList)
data Inh_ScalarExprStatementListPairList = Inh_ScalarExprStatementListPairList {_cat_Inh_ScalarExprStatementListPairList :: Catalog,_flags_Inh_ScalarExprStatementListPairList :: TypeCheckFlags,_imCast_Inh_ScalarExprStatementListPairList :: (Maybe TypeExtra)}
data Syn_ScalarExprStatementListPairList = Syn_ScalarExprStatementListPairList {_annotatedTree_Syn_ScalarExprStatementListPairList :: ScalarExprStatementListPairList,_originalTree_Syn_ScalarExprStatementListPairList :: ScalarExprStatementListPairList}
_wrap_ScalarExprStatementListPairList :: T_ScalarExprStatementListPairList ->
                                        Inh_ScalarExprStatementListPairList ->
                                        Syn_ScalarExprStatementListPairList
_wrap_ScalarExprStatementListPairList sem (Inh_ScalarExprStatementListPairList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_ScalarExprStatementListPairList _lhsOannotatedTree _lhsOoriginalTree))
_sem_ScalarExprStatementListPairList_Cons :: T_ScalarExprStatementListPair ->
                                            T_ScalarExprStatementListPairList ->
                                            T_ScalarExprStatementListPairList
_sem_ScalarExprStatementListPairList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: ScalarExprStatementListPairList
              _lhsOoriginalTree :: ScalarExprStatementListPairList
              _hdOcat :: Catalog
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: ScalarExprStatementListPair
              _hdIoriginalTree :: ScalarExprStatementListPair
              _tlIannotatedTree :: ScalarExprStatementListPairList
              _tlIoriginalTree :: ScalarExprStatementListPairList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 17383 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 17389 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 17395 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 17401 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 17407 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 17413 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 17419 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 17425 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 17431 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 17437 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree) =
                  hd_ _hdOcat _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_ScalarExprStatementListPairList_Nil :: T_ScalarExprStatementListPairList
_sem_ScalarExprStatementListPairList_Nil =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: ScalarExprStatementListPairList
              _lhsOoriginalTree :: ScalarExprStatementListPairList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 17455 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 17461 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 17467 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 17473 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- ScalarExprTransposedList ------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         expectedCast         : Bool
         expectedType         : Maybe [TypeExtra]
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : ScalarExprTransposedList 
         originalTree         : ScalarExprTransposedList 
         upType               : Maybe [TypeExtra]
   alternatives:
      alternative Cons:
         child hd             : ScalarExpr 
         child tl             : ScalarExprTransposedList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type ScalarExprTransposedList = [ScalarExpr]
-- cata
_sem_ScalarExprTransposedList :: ScalarExprTransposedList ->
                                T_ScalarExprTransposedList
_sem_ScalarExprTransposedList list =
    (Prelude.foldr _sem_ScalarExprTransposedList_Cons _sem_ScalarExprTransposedList_Nil (Prelude.map _sem_ScalarExpr list))
-- semantic domain
type T_ScalarExprTransposedList = Catalog ->
                                  Bool ->
                                  (Maybe [TypeExtra]) ->
                                  TypeCheckFlags ->
                                  (Maybe TypeExtra) ->
                                  ( ScalarExprTransposedList,ScalarExprTransposedList,(Maybe [TypeExtra]))
data Inh_ScalarExprTransposedList = Inh_ScalarExprTransposedList {_cat_Inh_ScalarExprTransposedList :: Catalog,_expectedCast_Inh_ScalarExprTransposedList :: Bool,_expectedType_Inh_ScalarExprTransposedList :: (Maybe [TypeExtra]),_flags_Inh_ScalarExprTransposedList :: TypeCheckFlags,_imCast_Inh_ScalarExprTransposedList :: (Maybe TypeExtra)}
data Syn_ScalarExprTransposedList = Syn_ScalarExprTransposedList {_annotatedTree_Syn_ScalarExprTransposedList :: ScalarExprTransposedList,_originalTree_Syn_ScalarExprTransposedList :: ScalarExprTransposedList,_upType_Syn_ScalarExprTransposedList :: (Maybe [TypeExtra])}
_wrap_ScalarExprTransposedList :: T_ScalarExprTransposedList ->
                                 Inh_ScalarExprTransposedList ->
                                 Syn_ScalarExprTransposedList
_wrap_ScalarExprTransposedList sem (Inh_ScalarExprTransposedList _lhsIcat _lhsIexpectedCast _lhsIexpectedType _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupType) = sem _lhsIcat _lhsIexpectedCast _lhsIexpectedType _lhsIflags _lhsIimCast
     in  (Syn_ScalarExprTransposedList _lhsOannotatedTree _lhsOoriginalTree _lhsOupType))
_sem_ScalarExprTransposedList_Cons :: T_ScalarExpr ->
                                     T_ScalarExprTransposedList ->
                                     T_ScalarExprTransposedList
_sem_ScalarExprTransposedList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast ->
         (let _hdOdownEnv :: Environment
              _lhsOupType :: (Maybe [TypeExtra])
              _hdOexpectedType :: (Maybe TypeExtra)
              _tlOexpectedType :: (Maybe [TypeExtra])
              _hdOexpectedCast :: Bool
              _tlOexpectedCast :: Bool
              _hdOodbcFunction :: Bool
              _hdOassignmentCastContext :: Bool
              _lhsOannotatedTree :: ScalarExprTransposedList
              _lhsOoriginalTree :: ScalarExprTransposedList
              _hdOcat :: Catalog
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: ScalarExpr
              _hdIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _hdIoriginalTree :: ScalarExpr
              _hdIupType :: (Maybe TypeExtra)
              _tlIannotatedTree :: ScalarExprTransposedList
              _tlIoriginalTree :: ScalarExprTransposedList
              _tlIupType :: (Maybe [TypeExtra])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 101, column 37)
              _hdOdownEnv =
                  ({-# LINE 101 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 17558 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 174, column 9)
              _lhsOupType =
                  ({-# LINE 174 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   liftM2 (:) _hdIupType _tlIupType
                   {-# LINE 17564 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 175, column 9)
              _hdOexpectedType =
                  ({-# LINE 175 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   liftM fst $ splitTypeExtraList _lhsIexpectedType
                   {-# LINE 17570 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 176, column 9)
              _tlOexpectedType =
                  ({-# LINE 176 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   liftM snd $ splitTypeExtraList _lhsIexpectedType
                   {-# LINE 17576 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 177, column 9)
              _hdOexpectedCast =
                  ({-# LINE 177 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIexpectedCast
                   {-# LINE 17582 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 178, column 9)
              _tlOexpectedCast =
                  ({-# LINE 178 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIexpectedCast
                   {-# LINE 17588 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 162, column 12)
              _hdOodbcFunction =
                  ({-# LINE 162 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 17594 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 821, column 37)
              _hdOassignmentCastContext =
                  ({-# LINE 821 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 17600 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 17606 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 17612 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 17618 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 17624 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 17630 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 17636 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 17642 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 17648 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 17654 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 17660 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIcolExprs,_hdIoriginalTree,_hdIupType) =
                  hd_ _hdOassignmentCastContext _hdOcat _hdOdownEnv _hdOexpectedCast _hdOexpectedType _hdOflags _hdOimCast _hdOodbcFunction
              ( _tlIannotatedTree,_tlIoriginalTree,_tlIupType) =
                  tl_ _tlOcat _tlOexpectedCast _tlOexpectedType _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupType)))
_sem_ScalarExprTransposedList_Nil :: T_ScalarExprTransposedList
_sem_ScalarExprTransposedList_Nil =
    (\ _lhsIcat
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOupType :: (Maybe [TypeExtra])
              _lhsOannotatedTree :: ScalarExprTransposedList
              _lhsOoriginalTree :: ScalarExprTransposedList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 180, column 9)
              _lhsOupType =
                  ({-# LINE 180 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   Just []
                   {-# LINE 17681 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 17687 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 17693 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 17699 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 17705 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupType)))
-- SelectItem --------------------------------------------------
{-
   visit 0:
      inherited attributes:
         assignmentCastContext : Bool
         cat                  : Catalog
         downEnv              : Environment
         expectedCast         : Bool
         expectedType         : Maybe TypeExtra
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : SelectItem 
         colExprs             : [(NameComponent,Maybe TypeExtra,ScalarExpr)]
         originalTree         : SelectItem 
   alternatives:
      alternative SelExp:
         child ann            : Annotation 
         child ex             : ScalarExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative SelectItem:
         child ann            : Annotation 
         child ex             : ScalarExpr 
         child name           : {NameComponent}
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data SelectItem = SelExp (Annotation) (ScalarExpr)
                | SelectItem (Annotation) (ScalarExpr) (NameComponent)
                deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_SelectItem :: SelectItem ->
                  T_SelectItem
_sem_SelectItem (SelExp _ann _ex) =
    (_sem_SelectItem_SelExp (_sem_Annotation _ann) (_sem_ScalarExpr _ex))
_sem_SelectItem (SelectItem _ann _ex _name) =
    (_sem_SelectItem_SelectItem (_sem_Annotation _ann) (_sem_ScalarExpr _ex) _name)
-- semantic domain
type T_SelectItem = Bool ->
                    Catalog ->
                    Environment ->
                    Bool ->
                    (Maybe TypeExtra) ->
                    TypeCheckFlags ->
                    (Maybe TypeExtra) ->
                    ( SelectItem,([(NameComponent,Maybe TypeExtra,ScalarExpr)]),SelectItem)
data Inh_SelectItem = Inh_SelectItem {_assignmentCastContext_Inh_SelectItem :: Bool,_cat_Inh_SelectItem :: Catalog,_downEnv_Inh_SelectItem :: Environment,_expectedCast_Inh_SelectItem :: Bool,_expectedType_Inh_SelectItem :: (Maybe TypeExtra),_flags_Inh_SelectItem :: TypeCheckFlags,_imCast_Inh_SelectItem :: (Maybe TypeExtra)}
data Syn_SelectItem = Syn_SelectItem {_annotatedTree_Syn_SelectItem :: SelectItem,_colExprs_Syn_SelectItem :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)]),_originalTree_Syn_SelectItem :: SelectItem}
_wrap_SelectItem :: T_SelectItem ->
                   Inh_SelectItem ->
                   Syn_SelectItem
_wrap_SelectItem sem (Inh_SelectItem _lhsIassignmentCastContext _lhsIcat _lhsIdownEnv _lhsIexpectedCast _lhsIexpectedType _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree) = sem _lhsIassignmentCastContext _lhsIcat _lhsIdownEnv _lhsIexpectedCast _lhsIexpectedType _lhsIflags _lhsIimCast
     in  (Syn_SelectItem _lhsOannotatedTree _lhsOcolExprs _lhsOoriginalTree))
_sem_SelectItem_SelExp :: T_Annotation ->
                         T_ScalarExpr ->
                         T_SelectItem
_sem_SelectItem_SelExp ann_ ex_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: SelectItem
              _annOtpe :: (Either [TypeError] TypeExtra)
              _exOexpectedType :: (Maybe TypeExtra)
              _exOexpectedCast :: Bool
              _exOodbcFunction :: Bool
              _lhsOoriginalTree :: SelectItem
              _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _exOassignmentCastContext :: Bool
              _exOcat :: Catalog
              _exOdownEnv :: Environment
              _exOflags :: TypeCheckFlags
              _exOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exIannotatedTree :: ScalarExpr
              _exIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exIoriginalTree :: ScalarExpr
              _exIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 117, column 7)
              _lhsOannotatedTree =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   if tcfAddSelectItemAliases _lhsIflags
                   then case _exIcolExprs of
                          [(n,_,_)] -> SelectItem _annIannotatedTree _exIannotatedTree n
                          _ ->
                               _annotatedTree
                   else _annotatedTree
                   {-# LINE 17806 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 208, column 7)
              _annOtpe =
                  ({-# LINE 208 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   Left []
                   {-# LINE 17812 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 209, column 7)
              _exOexpectedType =
                  ({-# LINE 209 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _lhsIexpectedType
                   {-# LINE 17818 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 210, column 7)
              _exOexpectedCast =
                  ({-# LINE 210 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _lhsIexpectedCast
                   {-# LINE 17824 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 165, column 25)
              _exOodbcFunction =
                  ({-# LINE 165 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 17830 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SelExp _annIannotatedTree _exIannotatedTree
                   {-# LINE 17836 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SelExp _annIoriginalTree _exIoriginalTree
                   {-# LINE 17842 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 17848 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (up)
              _lhsOcolExprs =
                  ({-# LINE 150 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _exIcolExprs
                   {-# LINE 17854 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 17860 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 17866 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 17872 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 17878 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 17884 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 17890 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 17896 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 17902 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exIannotatedTree,_exIcolExprs,_exIoriginalTree,_exIupType) =
                  ex_ _exOassignmentCastContext _exOcat _exOdownEnv _exOexpectedCast _exOexpectedType _exOflags _exOimCast _exOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree)))
_sem_SelectItem_SelectItem :: T_Annotation ->
                             T_ScalarExpr ->
                             NameComponent ->
                             T_SelectItem
_sem_SelectItem_SelectItem ann_ ex_ name_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _annOtpe :: (Either [TypeError] TypeExtra)
              _exOexpectedType :: (Maybe TypeExtra)
              _exOexpectedCast :: Bool
              _exOodbcFunction :: Bool
              _lhsOannotatedTree :: SelectItem
              _lhsOoriginalTree :: SelectItem
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _exOassignmentCastContext :: Bool
              _exOcat :: Catalog
              _exOdownEnv :: Environment
              _exOflags :: TypeCheckFlags
              _exOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exIannotatedTree :: ScalarExpr
              _exIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exIoriginalTree :: ScalarExpr
              _exIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 112, column 7)
              _lhsOcolExprs =
                  ({-# LINE 112 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   case _exIcolExprs of
                     [(_,t,e)] -> [(name_, t,e)]
                     x -> x
                   {-# LINE 17948 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 208, column 7)
              _annOtpe =
                  ({-# LINE 208 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   Left []
                   {-# LINE 17954 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 209, column 7)
              _exOexpectedType =
                  ({-# LINE 209 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _lhsIexpectedType
                   {-# LINE 17960 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 210, column 7)
              _exOexpectedCast =
                  ({-# LINE 210 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _lhsIexpectedCast
                   {-# LINE 17966 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 165, column 25)
              _exOodbcFunction =
                  ({-# LINE 165 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 17972 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SelectItem _annIannotatedTree _exIannotatedTree name_
                   {-# LINE 17978 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SelectItem _annIoriginalTree _exIoriginalTree name_
                   {-# LINE 17984 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 17990 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 17996 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 18002 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 18008 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 18014 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 18020 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 18026 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOdownEnv =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 18032 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 18038 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 18044 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exIannotatedTree,_exIcolExprs,_exIoriginalTree,_exIupType) =
                  ex_ _exOassignmentCastContext _exOcat _exOdownEnv _exOexpectedCast _exOexpectedType _exOflags _exOimCast _exOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree)))
-- SelectItemList ----------------------------------------------
{-
   visit 0:
      inherited attributes:
         assignmentCastContext : Bool
         cat                  : Catalog
         downEnv              : Environment
         expectedCast         : Bool
         expectedType         : Maybe [TypeExtra]
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : SelectItemList 
         colExprs             : [(NameComponent,Maybe TypeExtra,ScalarExpr)]
         originalTree         : SelectItemList 
         upEnv                : Environment
         upType               : Maybe [(Text,TypeExtra)]
   alternatives:
      alternative Cons:
         child hd             : SelectItem 
         child tl             : SelectItemList 
         visit 0:
            local colExprs    : _
            local upType      : _
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local upType      : _
            local annotatedTree : _
            local originalTree : _
-}
type SelectItemList = [SelectItem]
-- cata
_sem_SelectItemList :: SelectItemList ->
                      T_SelectItemList
_sem_SelectItemList list =
    (Prelude.foldr _sem_SelectItemList_Cons _sem_SelectItemList_Nil (Prelude.map _sem_SelectItem list))
-- semantic domain
type T_SelectItemList = Bool ->
                        Catalog ->
                        Environment ->
                        Bool ->
                        (Maybe [TypeExtra]) ->
                        TypeCheckFlags ->
                        (Maybe TypeExtra) ->
                        ( SelectItemList,([(NameComponent,Maybe TypeExtra,ScalarExpr)]),SelectItemList,Environment,(Maybe [(Text,TypeExtra)]))
data Inh_SelectItemList = Inh_SelectItemList {_assignmentCastContext_Inh_SelectItemList :: Bool,_cat_Inh_SelectItemList :: Catalog,_downEnv_Inh_SelectItemList :: Environment,_expectedCast_Inh_SelectItemList :: Bool,_expectedType_Inh_SelectItemList :: (Maybe [TypeExtra]),_flags_Inh_SelectItemList :: TypeCheckFlags,_imCast_Inh_SelectItemList :: (Maybe TypeExtra)}
data Syn_SelectItemList = Syn_SelectItemList {_annotatedTree_Syn_SelectItemList :: SelectItemList,_colExprs_Syn_SelectItemList :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)]),_originalTree_Syn_SelectItemList :: SelectItemList,_upEnv_Syn_SelectItemList :: Environment,_upType_Syn_SelectItemList :: (Maybe [(Text,TypeExtra)])}
_wrap_SelectItemList :: T_SelectItemList ->
                       Inh_SelectItemList ->
                       Syn_SelectItemList
_wrap_SelectItemList sem (Inh_SelectItemList _lhsIassignmentCastContext _lhsIcat _lhsIdownEnv _lhsIexpectedCast _lhsIexpectedType _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupEnv,_lhsOupType) = sem _lhsIassignmentCastContext _lhsIcat _lhsIdownEnv _lhsIexpectedCast _lhsIexpectedType _lhsIflags _lhsIimCast
     in  (Syn_SelectItemList _lhsOannotatedTree _lhsOcolExprs _lhsOoriginalTree _lhsOupEnv _lhsOupType))
_sem_SelectItemList_Cons :: T_SelectItem ->
                           T_SelectItemList ->
                           T_SelectItemList
_sem_SelectItemList_Cons hd_ tl_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: SelectItemList
              _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _hdOexpectedType :: (Maybe TypeExtra)
              _tlOexpectedType :: (Maybe [TypeExtra])
              _hdOexpectedCast :: Bool
              _tlOexpectedCast :: Bool
              _lhsOupType :: (Maybe [(Text,TypeExtra)])
              _lhsOupEnv :: Environment
              _lhsOoriginalTree :: SelectItemList
              _hdOassignmentCastContext :: Bool
              _hdOcat :: Catalog
              _hdOdownEnv :: Environment
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOassignmentCastContext :: Bool
              _tlOcat :: Catalog
              _tlOdownEnv :: Environment
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: SelectItem
              _hdIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _hdIoriginalTree :: SelectItem
              _tlIannotatedTree :: SelectItemList
              _tlIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _tlIoriginalTree :: SelectItemList
              _tlIupEnv :: Environment
              _tlIupType :: (Maybe [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 132, column 10)
              _lhsOannotatedTree =
                  ({-# LINE 132 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   if tcfExpandStars _lhsIflags
                   then flip map _colExprs $ \(n,_t,e) ->
                         if ncStr n == ncStr (columnName e) && not (tcfAddSelectItemAliases _lhsIflags)
                         then SelExp emptyAnnotation e
                         else SelectItem emptyAnnotation e n
                   else _annotatedTree
                   {-# LINE 18153 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 177, column 9)
              _colExprs =
                  ({-# LINE 177 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _hdIcolExprs ++ _tlIcolExprs
                   {-# LINE 18159 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 178, column 9)
              _lhsOcolExprs =
                  ({-# LINE 178 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _colExprs
                   {-# LINE 18165 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 179, column 9)
              _upType =
                  ({-# LINE 179 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   sequence $ flip map _colExprs
                   $ \(n,t,_) -> fmap (ncStrT n,) t
                   {-# LINE 18172 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 181, column 9)
              _hdOexpectedType =
                  ({-# LINE 181 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   liftM fst $ splitTypeExtraList _lhsIexpectedType
                   {-# LINE 18178 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 182, column 9)
              _tlOexpectedType =
                  ({-# LINE 182 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   liftM snd $ splitTypeExtraList _lhsIexpectedType
                   {-# LINE 18184 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 183, column 9)
              _hdOexpectedCast =
                  ({-# LINE 183 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _lhsIexpectedCast
                   {-# LINE 18190 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 184, column 9)
              _tlOexpectedCast =
                  ({-# LINE 184 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _lhsIexpectedCast
                   {-# LINE 18196 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 186, column 7)
              _lhsOupType =
                  ({-# LINE 186 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _upType
                   {-# LINE 18202 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 187, column 7)
              _lhsOupEnv =
                  ({-# LINE 187 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   case fmap E.envSelectListEnvironment _upType     of
                     (Just (Right e)) -> e
                     _ -> E.brokeEnvironment
                   {-# LINE 18210 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 18216 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 18222 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 18228 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 18234 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 18240 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOdownEnv =
                  ({-# LINE 151 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 18246 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 18252 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 18258 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 18264 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 18270 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOdownEnv =
                  ({-# LINE 156 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 18276 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 18282 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 18288 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIcolExprs,_hdIoriginalTree) =
                  hd_ _hdOassignmentCastContext _hdOcat _hdOdownEnv _hdOexpectedCast _hdOexpectedType _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIcolExprs,_tlIoriginalTree,_tlIupEnv,_tlIupType) =
                  tl_ _tlOassignmentCastContext _tlOcat _tlOdownEnv _tlOexpectedCast _tlOexpectedType _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupEnv,_lhsOupType)))
_sem_SelectItemList_Nil :: T_SelectItemList
_sem_SelectItemList_Nil =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: SelectItemList
              _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _lhsOupType :: (Maybe [(Text,TypeExtra)])
              _lhsOupEnv :: Environment
              _lhsOoriginalTree :: SelectItemList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 131, column 9)
              _lhsOannotatedTree =
                  ({-# LINE 131 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   []
                   {-# LINE 18313 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 174, column 9)
              _lhsOcolExprs =
                  ({-# LINE 174 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   []
                   {-# LINE 18319 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 175, column 9)
              _upType =
                  ({-# LINE 175 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   Nothing
                   {-# LINE 18325 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 186, column 7)
              _lhsOupType =
                  ({-# LINE 186 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _upType
                   {-# LINE 18331 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 187, column 7)
              _lhsOupEnv =
                  ({-# LINE 187 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   case fmap E.envSelectListEnvironment _upType     of
                     (Just (Right e)) -> e
                     _ -> E.brokeEnvironment
                   {-# LINE 18339 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 18345 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 18351 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 18357 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupEnv,_lhsOupType)))
-- SelectList --------------------------------------------------
{-
   visit 0:
      inherited attributes:
         assignmentCastContext : Bool
         cat                  : Catalog
         downEnv              : Environment
         expectedCast         : Bool
         expectedType         : Maybe [TypeExtra]
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : SelectList 
         colExprs             : [(NameComponent,Maybe TypeExtra,ScalarExpr)]
         originalTree         : SelectList 
         upEnv                : Environment
         upType               : Maybe [(Text,TypeExtra)]
   alternatives:
      alternative SelectList:
         child ann            : Annotation 
         child items          : SelectItemList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data SelectList = SelectList (Annotation) (SelectItemList)
                deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_SelectList :: SelectList ->
                  T_SelectList
_sem_SelectList (SelectList _ann _items) =
    (_sem_SelectList_SelectList (_sem_Annotation _ann) (_sem_SelectItemList _items))
-- semantic domain
type T_SelectList = Bool ->
                    Catalog ->
                    Environment ->
                    Bool ->
                    (Maybe [TypeExtra]) ->
                    TypeCheckFlags ->
                    (Maybe TypeExtra) ->
                    ( SelectList,([(NameComponent,Maybe TypeExtra,ScalarExpr)]),SelectList,Environment,(Maybe [(Text,TypeExtra)]))
data Inh_SelectList = Inh_SelectList {_assignmentCastContext_Inh_SelectList :: Bool,_cat_Inh_SelectList :: Catalog,_downEnv_Inh_SelectList :: Environment,_expectedCast_Inh_SelectList :: Bool,_expectedType_Inh_SelectList :: (Maybe [TypeExtra]),_flags_Inh_SelectList :: TypeCheckFlags,_imCast_Inh_SelectList :: (Maybe TypeExtra)}
data Syn_SelectList = Syn_SelectList {_annotatedTree_Syn_SelectList :: SelectList,_colExprs_Syn_SelectList :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)]),_originalTree_Syn_SelectList :: SelectList,_upEnv_Syn_SelectList :: Environment,_upType_Syn_SelectList :: (Maybe [(Text,TypeExtra)])}
_wrap_SelectList :: T_SelectList ->
                   Inh_SelectList ->
                   Syn_SelectList
_wrap_SelectList sem (Inh_SelectList _lhsIassignmentCastContext _lhsIcat _lhsIdownEnv _lhsIexpectedCast _lhsIexpectedType _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupEnv,_lhsOupType) = sem _lhsIassignmentCastContext _lhsIcat _lhsIdownEnv _lhsIexpectedCast _lhsIexpectedType _lhsIflags _lhsIimCast
     in  (Syn_SelectList _lhsOannotatedTree _lhsOcolExprs _lhsOoriginalTree _lhsOupEnv _lhsOupType))
_sem_SelectList_SelectList :: T_Annotation ->
                             T_SelectItemList ->
                             T_SelectList
_sem_SelectList_SelectList ann_ items_ =
    (\ _lhsIassignmentCastContext
       _lhsIcat
       _lhsIdownEnv
       _lhsIexpectedCast
       _lhsIexpectedType
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _itemsOexpectedCast :: Bool
              _lhsOannotatedTree :: SelectList
              _lhsOoriginalTree :: SelectList
              _lhsOcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _lhsOupEnv :: Environment
              _lhsOupType :: (Maybe [(Text,TypeExtra)])
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _itemsOassignmentCastContext :: Bool
              _itemsOcat :: Catalog
              _itemsOdownEnv :: Environment
              _itemsOexpectedType :: (Maybe [TypeExtra])
              _itemsOflags :: TypeCheckFlags
              _itemsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _itemsIannotatedTree :: SelectItemList
              _itemsIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _itemsIoriginalTree :: SelectItemList
              _itemsIupEnv :: Environment
              _itemsIupType :: (Maybe [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 204, column 7)
              _annOtpe =
                  ({-# LINE 204 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   Left []
                   {-# LINE 18447 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag"(line 205, column 7)
              _itemsOexpectedCast =
                  ({-# LINE 205 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   True
                   {-# LINE 18453 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SelectList _annIannotatedTree _itemsIannotatedTree
                   {-# LINE 18459 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SelectList _annIoriginalTree _itemsIoriginalTree
                   {-# LINE 18465 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 18471 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 18477 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (up)
              _lhsOcolExprs =
                  ({-# LINE 157 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _itemsIcolExprs
                   {-# LINE 18483 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (up)
              _lhsOupEnv =
                  ({-# LINE 161 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _itemsIupEnv
                   {-# LINE 18489 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (up)
              _lhsOupType =
                  ({-# LINE 158 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _itemsIupType
                   {-# LINE 18495 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 18501 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 18507 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 18513 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _itemsOassignmentCastContext =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   _lhsIassignmentCastContext
                   {-# LINE 18519 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _itemsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 18525 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _itemsOdownEnv =
                  ({-# LINE 156 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _lhsIdownEnv
                   {-# LINE 18531 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _itemsOexpectedType =
                  ({-# LINE 159 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/SelectLists.ag" #-}
                   _lhsIexpectedType
                   {-# LINE 18537 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _itemsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 18543 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _itemsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 18549 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _itemsIannotatedTree,_itemsIcolExprs,_itemsIoriginalTree,_itemsIupEnv,_itemsIupType) =
                  items_ _itemsOassignmentCastContext _itemsOcat _itemsOdownEnv _itemsOexpectedCast _itemsOexpectedType _itemsOflags _itemsOimCast
          in  ( _lhsOannotatedTree,_lhsOcolExprs,_lhsOoriginalTree,_lhsOupEnv,_lhsOupType)))
-- SetClause ---------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : SetClause 
         originalTree         : SetClause 
   alternatives:
      alternative SetClause:
         child ann            : Annotation 
         child setTarget      : {NameComponent}
         child ex             : ScalarExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative MultiSetClause:
         child ann            : Annotation 
         child setTargets     : {[NameComponent]}
         child ex             : ScalarExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data SetClause = SetClause (Annotation) (NameComponent) (ScalarExpr)
               | MultiSetClause (Annotation) (([NameComponent])) (ScalarExpr)
               deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_SetClause :: SetClause ->
                 T_SetClause
_sem_SetClause (SetClause _ann _setTarget _ex) =
    (_sem_SetClause_SetClause (_sem_Annotation _ann) _setTarget (_sem_ScalarExpr _ex))
_sem_SetClause (MultiSetClause _ann _setTargets _ex) =
    (_sem_SetClause_MultiSetClause (_sem_Annotation _ann) _setTargets (_sem_ScalarExpr _ex))
-- semantic domain
type T_SetClause = Catalog ->
                   TypeCheckFlags ->
                   (Maybe TypeExtra) ->
                   ( SetClause,SetClause)
data Inh_SetClause = Inh_SetClause {_cat_Inh_SetClause :: Catalog,_flags_Inh_SetClause :: TypeCheckFlags,_imCast_Inh_SetClause :: (Maybe TypeExtra)}
data Syn_SetClause = Syn_SetClause {_annotatedTree_Syn_SetClause :: SetClause,_originalTree_Syn_SetClause :: SetClause}
_wrap_SetClause :: T_SetClause ->
                  Inh_SetClause ->
                  Syn_SetClause
_wrap_SetClause sem (Inh_SetClause _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_SetClause _lhsOannotatedTree _lhsOoriginalTree))
_sem_SetClause_SetClause :: T_Annotation ->
                           NameComponent ->
                           T_ScalarExpr ->
                           T_SetClause
_sem_SetClause_SetClause ann_ setTarget_ ex_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _exOdownEnv :: Environment
              _exOexpectedCast :: Bool
              _exOexpectedType :: (Maybe TypeExtra)
              _exOodbcFunction :: Bool
              _exOassignmentCastContext :: Bool
              _lhsOannotatedTree :: SetClause
              _lhsOoriginalTree :: SetClause
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _exOcat :: Catalog
              _exOflags :: TypeCheckFlags
              _exOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exIannotatedTree :: ScalarExpr
              _exIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exIoriginalTree :: ScalarExpr
              _exIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 106, column 27)
              _annOtpe =
                  ({-# LINE 106 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 18637 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 107, column 27)
              _exOdownEnv =
                  ({-# LINE 107 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 18643 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 108, column 27)
              _exOexpectedCast =
                  ({-# LINE 108 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 18649 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 109, column 27)
              _exOexpectedType =
                  ({-# LINE 109 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 18655 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 168, column 32)
              _exOodbcFunction =
                  ({-# LINE 168 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 18661 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 823, column 27)
              _exOassignmentCastContext =
                  ({-# LINE 823 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 18667 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SetClause _annIannotatedTree setTarget_ _exIannotatedTree
                   {-# LINE 18673 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SetClause _annIoriginalTree setTarget_ _exIoriginalTree
                   {-# LINE 18679 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 18685 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 18691 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 18697 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 18703 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 18709 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 18715 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 18721 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 18727 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exIannotatedTree,_exIcolExprs,_exIoriginalTree,_exIupType) =
                  ex_ _exOassignmentCastContext _exOcat _exOdownEnv _exOexpectedCast _exOexpectedType _exOflags _exOimCast _exOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_SetClause_MultiSetClause :: T_Annotation ->
                                ([NameComponent]) ->
                                T_ScalarExpr ->
                                T_SetClause
_sem_SetClause_MultiSetClause ann_ setTargets_ ex_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _exOdownEnv :: Environment
              _exOexpectedCast :: Bool
              _exOexpectedType :: (Maybe TypeExtra)
              _exOodbcFunction :: Bool
              _exOassignmentCastContext :: Bool
              _lhsOannotatedTree :: SetClause
              _lhsOoriginalTree :: SetClause
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _exOcat :: Catalog
              _exOflags :: TypeCheckFlags
              _exOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exIannotatedTree :: ScalarExpr
              _exIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exIoriginalTree :: ScalarExpr
              _exIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 102, column 32)
              _annOtpe =
                  ({-# LINE 102 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 18766 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 103, column 32)
              _exOdownEnv =
                  ({-# LINE 103 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 18772 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 104, column 32)
              _exOexpectedCast =
                  ({-# LINE 104 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 18778 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 105, column 32)
              _exOexpectedType =
                  ({-# LINE 105 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 18784 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 168, column 32)
              _exOodbcFunction =
                  ({-# LINE 168 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 18790 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 822, column 32)
              _exOassignmentCastContext =
                  ({-# LINE 822 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 18796 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   MultiSetClause _annIannotatedTree setTargets_ _exIannotatedTree
                   {-# LINE 18802 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   MultiSetClause _annIoriginalTree setTargets_ _exIoriginalTree
                   {-# LINE 18808 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 18814 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 18820 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 18826 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 18832 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 18838 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 18844 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 18850 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 18856 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exIannotatedTree,_exIcolExprs,_exIoriginalTree,_exIupType) =
                  ex_ _exOassignmentCastContext _exOcat _exOdownEnv _exOexpectedCast _exOexpectedType _exOflags _exOimCast _exOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- SetClauseList -----------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : SetClauseList 
         originalTree         : SetClauseList 
   alternatives:
      alternative Cons:
         child hd             : SetClause 
         child tl             : SetClauseList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type SetClauseList = [SetClause]
-- cata
_sem_SetClauseList :: SetClauseList ->
                     T_SetClauseList
_sem_SetClauseList list =
    (Prelude.foldr _sem_SetClauseList_Cons _sem_SetClauseList_Nil (Prelude.map _sem_SetClause list))
-- semantic domain
type T_SetClauseList = Catalog ->
                       TypeCheckFlags ->
                       (Maybe TypeExtra) ->
                       ( SetClauseList,SetClauseList)
data Inh_SetClauseList = Inh_SetClauseList {_cat_Inh_SetClauseList :: Catalog,_flags_Inh_SetClauseList :: TypeCheckFlags,_imCast_Inh_SetClauseList :: (Maybe TypeExtra)}
data Syn_SetClauseList = Syn_SetClauseList {_annotatedTree_Syn_SetClauseList :: SetClauseList,_originalTree_Syn_SetClauseList :: SetClauseList}
_wrap_SetClauseList :: T_SetClauseList ->
                      Inh_SetClauseList ->
                      Syn_SetClauseList
_wrap_SetClauseList sem (Inh_SetClauseList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_SetClauseList _lhsOannotatedTree _lhsOoriginalTree))
_sem_SetClauseList_Cons :: T_SetClause ->
                          T_SetClauseList ->
                          T_SetClauseList
_sem_SetClauseList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: SetClauseList
              _lhsOoriginalTree :: SetClauseList
              _hdOcat :: Catalog
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: SetClause
              _hdIoriginalTree :: SetClause
              _tlIannotatedTree :: SetClauseList
              _tlIoriginalTree :: SetClauseList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 18927 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 18933 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 18939 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 18945 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 18951 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 18957 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 18963 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 18969 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 18975 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 18981 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree) =
                  hd_ _hdOcat _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_SetClauseList_Nil :: T_SetClauseList
_sem_SetClauseList_Nil =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: SetClauseList
              _lhsOoriginalTree :: SetClauseList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 18999 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 19005 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 19011 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 19017 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- Statement ---------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : Statement 
         originalTree         : Statement 
   alternatives:
      alternative QueryStatement:
         child ann            : Annotation 
         child ex             : QueryExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Insert:
         child ann            : Annotation 
         child table          : Name 
         child targetCols     : {[NameComponent]}
         child insData        : QueryExpr 
         child returning      : MaybeSelectList 
         visit 0:
            local tpe         : {Either [TypeError] [TypeExtra]}
            local tooManyCols : {Maybe [TypeError]}
            local annotatedTree : _
            local originalTree : _
      alternative Update:
         child ann            : Annotation 
         child table          : Name 
         child assigns        : SetClauseList 
         child fromList       : TableRefList 
         child whr            : MaybeBoolExpr 
         child returning      : MaybeSelectList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Delete:
         child ann            : Annotation 
         child table          : Name 
         child using          : TableRefList 
         child whr            : MaybeBoolExpr 
         child returning      : MaybeSelectList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CopyFrom:
         child ann            : Annotation 
         child table          : Name 
         child targetCols     : {[NameComponent]}
         child source         : {CopyFromSource}
         child opts           : {[CopyFromOption]}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CopyData:
         child ann            : Annotation 
         child insData        : {String}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CopyTo:
         child ann            : Annotation 
         child cp             : {CopyToSource}
         child fn             : {String}
         child opts           : {[CopyToOption]}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Truncate:
         child ann            : Annotation 
         child tables         : {[Name]}
         child restartIdentity : {RestartIdentity}
         child cascade        : {Cascade}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CreateTable:
         child ann            : Annotation 
         child name           : Name 
         child atts           : AttributeDefList 
         child cons           : ConstraintList 
         child partition      : MaybeTablePartitionDef 
         child rep            : {Replace}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterTable:
         child ann            : Annotation 
         child name           : Name 
         child operation      : AlterTableOperation 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterDatabase:
         child ann            : Annotation 
         child name           : Name 
         child operation      : AlterDatabaseOperation 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CreateSequence:
         child ann            : Annotation 
         child name           : Name 
         child incr           : {Integer}
         child min            : {Maybe Integer}
         child max            : {Maybe Integer}
         child start          : {Integer}
         child cache          : {Integer}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterSequence:
         child ann            : Annotation 
         child name           : Name 
         child operation      : AlterSequenceOperation 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CreateTableAs:
         child ann            : Annotation 
         child name           : Name 
         child rep            : {Replace}
         child expr           : QueryExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CreateView:
         child ann            : Annotation 
         child name           : Name 
         child colNames       : {MaybeNameComponentList}
         child expr           : QueryExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterView:
         child ann            : Annotation 
         child name           : Name 
         child colNames       : {MaybeNameComponentList}
         child expr           : QueryExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CreateType:
         child ann            : Annotation 
         child name           : Name 
         child atts           : TypeAttributeDefList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CreateUser:
         child ann            : Annotation 
         child name           : Name 
         child password       : {String}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CreateLogin:
         child ann            : Annotation 
         child name           : Name 
         child password       : {String}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterUser:
         child ann            : Annotation 
         child name           : Name 
         child password       : {String}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterLogin:
         child ann            : Annotation 
         child name           : Name 
         child password       : {String}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CreateSchema:
         child ann            : Annotation 
         child name           : {NameComponent}
         child owner          : {Maybe Name}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AlterSchema:
         child ann            : Annotation 
         child name           : {NameComponent}
         child operation      : AlterSchemaOperation 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CreateFunction:
         child ann            : Annotation 
         child name           : Name 
         child params         : ParamDefList 
         child rettype        : TypeName 
         child rep            : {Replace}
         child lang           : {Language}
         child body           : FnBody 
         child vol            : {Volatility}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CreateDomain:
         child ann            : Annotation 
         child name           : Name 
         child typ            : TypeName 
         child constraintName : {String}
         child check          : MaybeBoolExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CreateLanguage:
         child ann            : Annotation 
         child name           : {String}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CreateTrigger:
         child ann            : Annotation 
         child name           : {NameComponent}
         child wh             : {TriggerWhen}
         child events         : {[TriggerEvent]}
         child tbl            : Name 
         child firing         : {TriggerFire}
         child fnName         : Name 
         child fnArgs         : ScalarExprList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative DropFunction:
         child ann            : Annotation 
         child ifE            : {IfExists}
         child sigs           : NameTypeNameListPairList 
         child cascade        : {Cascade}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative DropSomething:
         child ann            : Annotation 
         child dropType       : {DropType}
         child ifE            : {IfExists}
         child names          : {[Name]}
         child cascade        : {Cascade}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative DropTrigger:
         child ann            : Annotation 
         child ifE            : {IfExists}
         child name           : {NameComponent}
         child tbl            : Name 
         child cascade        : {Cascade}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CreateDatabase:
         child ann            : Annotation 
         child nm             : Name 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Set:
         child ann            : Annotation 
         child name           : {String}
         child values         : {[SetValue]}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Notify:
         child ann            : Annotation 
         child name           : {String}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Into:
         child ann            : Annotation 
         child strict         : {Bool}
         child into           : {[Name]}
         child stmt           : Statement 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Assignment:
         child ann            : Annotation 
         child target         : Name 
         child value          : ScalarExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Return:
         child ann            : Annotation 
         child value          : MaybeScalarExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative ReturnNext:
         child ann            : Annotation 
         child expr           : ScalarExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative ReturnQuery:
         child ann            : Annotation 
         child sel            : QueryExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Raise:
         child ann            : Annotation 
         child level          : {RaiseType}
         child message        : {String}
         child args           : ScalarExprList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative NullStatement:
         child ann            : Annotation 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Perform:
         child ann            : Annotation 
         child expr           : ScalarExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Execute:
         child ann            : Annotation 
         child expr           : ScalarExpr 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative ForQueryStatement:
         child ann            : Annotation 
         child lb             : {Maybe String}
         child var            : {NameComponent}
         child sel            : QueryExpr 
         child sts            : StatementList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative ForIntegerStatement:
         child ann            : Annotation 
         child lb             : {Maybe String}
         child var            : {NameComponent}
         child from           : ScalarExpr 
         child to             : ScalarExpr 
         child sts            : StatementList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative LoopStatement:
         child ann            : Annotation 
         child lb             : {Maybe String}
         child sts            : StatementList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative WhileStatement:
         child ann            : Annotation 
         child lb             : {Maybe String}
         child expr           : ScalarExpr 
         child sts            : StatementList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative ContinueStatement:
         child ann            : Annotation 
         child lb             : {Maybe String}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative ExitStatement:
         child ann            : Annotation 
         child lb             : {Maybe String}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CaseStatementSimple:
         child ann            : Annotation 
         child val            : ScalarExpr 
         child cases          : ScalarExprListStatementListTripleList 
         child els            : StatementList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CaseStatement:
         child ann            : Annotation 
         child cases          : ScalarExprListStatementListTripleList 
         child els            : StatementList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative If:
         child ann            : Annotation 
         child cases          : ScalarExprStatementListPairList 
         child els            : StatementList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Block:
         child ann            : Annotation 
         child lb             : {Maybe String}
         child vars           : VarDefList 
         child sts            : StatementList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative AntiStatement:
         child string         : {String}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative DeclareStatement:
         child ann            : Annotation 
         child ds             : {[(String,TypeName,Maybe ScalarExpr)]}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative ExecStatement:
         child ann            : Annotation 
         child spName         : Name 
         child args           : ScalarExprList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative CreateIndexTSQL:
         child ann            : Annotation 
         child nm             : {NameComponent}
         child obj            : Name 
         child cols           : {[NameComponent]}
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data Statement = QueryStatement (Annotation) (QueryExpr)
               | Insert (Annotation) (Name) (([NameComponent])) (QueryExpr) (MaybeSelectList)
               | Update (Annotation) (Name) (SetClauseList) (TableRefList) (MaybeBoolExpr) (MaybeSelectList)
               | Delete (Annotation) (Name) (TableRefList) (MaybeBoolExpr) (MaybeSelectList)
               | CopyFrom (Annotation) (Name) (([NameComponent])) (CopyFromSource) (([CopyFromOption]))
               | CopyData (Annotation) (String)
               | CopyTo (Annotation) (CopyToSource) (String) (([CopyToOption]))
               | Truncate (Annotation) (([Name])) (RestartIdentity) (Cascade)
               | CreateTable (Annotation) (Name) (AttributeDefList) (ConstraintList) (MaybeTablePartitionDef) (Replace)
               | AlterTable (Annotation) (Name) (AlterTableOperation)
               | AlterDatabase (Annotation) (Name) (AlterDatabaseOperation)
               | CreateSequence (Annotation) (Name) (Integer) ((Maybe Integer)) ((Maybe Integer)) (Integer) (Integer)
               | AlterSequence (Annotation) (Name) (AlterSequenceOperation)
               | CreateTableAs (Annotation) (Name) (Replace) (QueryExpr)
               | CreateView (Annotation) (Name) (MaybeNameComponentList) (QueryExpr)
               | AlterView (Annotation) (Name) (MaybeNameComponentList) (QueryExpr)
               | CreateType (Annotation) (Name) (TypeAttributeDefList)
               | CreateUser (Annotation) (Name) (String)
               | CreateLogin (Annotation) (Name) (String)
               | AlterUser (Annotation) (Name) (String)
               | AlterLogin (Annotation) (Name) (String)
               | CreateSchema (Annotation) (NameComponent) ((Maybe Name))
               | AlterSchema (Annotation) (NameComponent) (AlterSchemaOperation)
               | CreateFunction (Annotation) (Name) (ParamDefList) (TypeName) (Replace) (Language) (FnBody) (Volatility)
               | CreateDomain (Annotation) (Name) (TypeName) (String) (MaybeBoolExpr)
               | CreateLanguage (Annotation) (String)
               | CreateTrigger (Annotation) (NameComponent) (TriggerWhen) (([TriggerEvent])) (Name) (TriggerFire) (Name) (ScalarExprList)
               | DropFunction (Annotation) (IfExists) (NameTypeNameListPairList) (Cascade)
               | DropSomething (Annotation) (DropType) (IfExists) (([Name])) (Cascade)
               | DropTrigger (Annotation) (IfExists) (NameComponent) (Name) (Cascade)
               | CreateDatabase (Annotation) (Name)
               | Set (Annotation) (String) (([SetValue]))
               | Notify (Annotation) (String)
               | Into (Annotation) (Bool) (([Name])) (Statement)
               | Assignment (Annotation) (Name) (ScalarExpr)
               | Return (Annotation) (MaybeScalarExpr)
               | ReturnNext (Annotation) (ScalarExpr)
               | ReturnQuery (Annotation) (QueryExpr)
               | Raise (Annotation) (RaiseType) (String) (ScalarExprList)
               | NullStatement (Annotation)
               | Perform (Annotation) (ScalarExpr)
               | Execute (Annotation) (ScalarExpr)
               | ForQueryStatement (Annotation) ((Maybe String)) (NameComponent) (QueryExpr) (StatementList)
               | ForIntegerStatement (Annotation) ((Maybe String)) (NameComponent) (ScalarExpr) (ScalarExpr) (StatementList)
               | LoopStatement (Annotation) ((Maybe String)) (StatementList)
               | WhileStatement (Annotation) ((Maybe String)) (ScalarExpr) (StatementList)
               | ContinueStatement (Annotation) ((Maybe String))
               | ExitStatement (Annotation) ((Maybe String))
               | CaseStatementSimple (Annotation) (ScalarExpr) (ScalarExprListStatementListTripleList) (StatementList)
               | CaseStatement (Annotation) (ScalarExprListStatementListTripleList) (StatementList)
               | If (Annotation) (ScalarExprStatementListPairList) (StatementList)
               | Block (Annotation) ((Maybe String)) (VarDefList) (StatementList)
               | AntiStatement (String)
               | DeclareStatement (Annotation) (([(String,TypeName,Maybe ScalarExpr)]))
               | ExecStatement (Annotation) (Name) (ScalarExprList)
               | CreateIndexTSQL (Annotation) (NameComponent) (Name) (([NameComponent]))
               deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_Statement :: Statement ->
                 T_Statement
_sem_Statement (QueryStatement _ann _ex) =
    (_sem_Statement_QueryStatement (_sem_Annotation _ann) (_sem_QueryExpr _ex))
_sem_Statement (Insert _ann _table _targetCols _insData _returning) =
    (_sem_Statement_Insert (_sem_Annotation _ann) (_sem_Name _table) _targetCols (_sem_QueryExpr _insData) (_sem_MaybeSelectList _returning))
_sem_Statement (Update _ann _table _assigns _fromList _whr _returning) =
    (_sem_Statement_Update (_sem_Annotation _ann) (_sem_Name _table) (_sem_SetClauseList _assigns) (_sem_TableRefList _fromList) (_sem_MaybeBoolExpr _whr) (_sem_MaybeSelectList _returning))
_sem_Statement (Delete _ann _table _using _whr _returning) =
    (_sem_Statement_Delete (_sem_Annotation _ann) (_sem_Name _table) (_sem_TableRefList _using) (_sem_MaybeBoolExpr _whr) (_sem_MaybeSelectList _returning))
_sem_Statement (CopyFrom _ann _table _targetCols _source _opts) =
    (_sem_Statement_CopyFrom (_sem_Annotation _ann) (_sem_Name _table) _targetCols _source _opts)
_sem_Statement (CopyData _ann _insData) =
    (_sem_Statement_CopyData (_sem_Annotation _ann) _insData)
_sem_Statement (CopyTo _ann _cp _fn _opts) =
    (_sem_Statement_CopyTo (_sem_Annotation _ann) _cp _fn _opts)
_sem_Statement (Truncate _ann _tables _restartIdentity _cascade) =
    (_sem_Statement_Truncate (_sem_Annotation _ann) _tables _restartIdentity _cascade)
_sem_Statement (CreateTable _ann _name _atts _cons _partition _rep) =
    (_sem_Statement_CreateTable (_sem_Annotation _ann) (_sem_Name _name) (_sem_AttributeDefList _atts) (_sem_ConstraintList _cons) (_sem_MaybeTablePartitionDef _partition) _rep)
_sem_Statement (AlterTable _ann _name _operation) =
    (_sem_Statement_AlterTable (_sem_Annotation _ann) (_sem_Name _name) (_sem_AlterTableOperation _operation))
_sem_Statement (AlterDatabase _ann _name _operation) =
    (_sem_Statement_AlterDatabase (_sem_Annotation _ann) (_sem_Name _name) (_sem_AlterDatabaseOperation _operation))
_sem_Statement (CreateSequence _ann _name _incr _min _max _start _cache) =
    (_sem_Statement_CreateSequence (_sem_Annotation _ann) (_sem_Name _name) _incr _min _max _start _cache)
_sem_Statement (AlterSequence _ann _name _operation) =
    (_sem_Statement_AlterSequence (_sem_Annotation _ann) (_sem_Name _name) (_sem_AlterSequenceOperation _operation))
_sem_Statement (CreateTableAs _ann _name _rep _expr) =
    (_sem_Statement_CreateTableAs (_sem_Annotation _ann) (_sem_Name _name) _rep (_sem_QueryExpr _expr))
_sem_Statement (CreateView _ann _name _colNames _expr) =
    (_sem_Statement_CreateView (_sem_Annotation _ann) (_sem_Name _name) _colNames (_sem_QueryExpr _expr))
_sem_Statement (AlterView _ann _name _colNames _expr) =
    (_sem_Statement_AlterView (_sem_Annotation _ann) (_sem_Name _name) _colNames (_sem_QueryExpr _expr))
_sem_Statement (CreateType _ann _name _atts) =
    (_sem_Statement_CreateType (_sem_Annotation _ann) (_sem_Name _name) (_sem_TypeAttributeDefList _atts))
_sem_Statement (CreateUser _ann _name _password) =
    (_sem_Statement_CreateUser (_sem_Annotation _ann) (_sem_Name _name) _password)
_sem_Statement (CreateLogin _ann _name _password) =
    (_sem_Statement_CreateLogin (_sem_Annotation _ann) (_sem_Name _name) _password)
_sem_Statement (AlterUser _ann _name _password) =
    (_sem_Statement_AlterUser (_sem_Annotation _ann) (_sem_Name _name) _password)
_sem_Statement (AlterLogin _ann _name _password) =
    (_sem_Statement_AlterLogin (_sem_Annotation _ann) (_sem_Name _name) _password)
_sem_Statement (CreateSchema _ann _name _owner) =
    (_sem_Statement_CreateSchema (_sem_Annotation _ann) _name _owner)
_sem_Statement (AlterSchema _ann _name _operation) =
    (_sem_Statement_AlterSchema (_sem_Annotation _ann) _name (_sem_AlterSchemaOperation _operation))
_sem_Statement (CreateFunction _ann _name _params _rettype _rep _lang _body _vol) =
    (_sem_Statement_CreateFunction (_sem_Annotation _ann) (_sem_Name _name) (_sem_ParamDefList _params) (_sem_TypeName _rettype) _rep _lang (_sem_FnBody _body) _vol)
_sem_Statement (CreateDomain _ann _name _typ _constraintName _check) =
    (_sem_Statement_CreateDomain (_sem_Annotation _ann) (_sem_Name _name) (_sem_TypeName _typ) _constraintName (_sem_MaybeBoolExpr _check))
_sem_Statement (CreateLanguage _ann _name) =
    (_sem_Statement_CreateLanguage (_sem_Annotation _ann) _name)
_sem_Statement (CreateTrigger _ann _name _wh _events _tbl _firing _fnName _fnArgs) =
    (_sem_Statement_CreateTrigger (_sem_Annotation _ann) _name _wh _events (_sem_Name _tbl) _firing (_sem_Name _fnName) (_sem_ScalarExprList _fnArgs))
_sem_Statement (DropFunction _ann _ifE _sigs _cascade) =
    (_sem_Statement_DropFunction (_sem_Annotation _ann) _ifE (_sem_NameTypeNameListPairList _sigs) _cascade)
_sem_Statement (DropSomething _ann _dropType _ifE _names _cascade) =
    (_sem_Statement_DropSomething (_sem_Annotation _ann) _dropType _ifE _names _cascade)
_sem_Statement (DropTrigger _ann _ifE _name _tbl _cascade) =
    (_sem_Statement_DropTrigger (_sem_Annotation _ann) _ifE _name (_sem_Name _tbl) _cascade)
_sem_Statement (CreateDatabase _ann _nm) =
    (_sem_Statement_CreateDatabase (_sem_Annotation _ann) (_sem_Name _nm))
_sem_Statement (Set _ann _name _values) =
    (_sem_Statement_Set (_sem_Annotation _ann) _name _values)
_sem_Statement (Notify _ann _name) =
    (_sem_Statement_Notify (_sem_Annotation _ann) _name)
_sem_Statement (Into _ann _strict _into _stmt) =
    (_sem_Statement_Into (_sem_Annotation _ann) _strict _into (_sem_Statement _stmt))
_sem_Statement (Assignment _ann _target _value) =
    (_sem_Statement_Assignment (_sem_Annotation _ann) (_sem_Name _target) (_sem_ScalarExpr _value))
_sem_Statement (Return _ann _value) =
    (_sem_Statement_Return (_sem_Annotation _ann) (_sem_MaybeScalarExpr _value))
_sem_Statement (ReturnNext _ann _expr) =
    (_sem_Statement_ReturnNext (_sem_Annotation _ann) (_sem_ScalarExpr _expr))
_sem_Statement (ReturnQuery _ann _sel) =
    (_sem_Statement_ReturnQuery (_sem_Annotation _ann) (_sem_QueryExpr _sel))
_sem_Statement (Raise _ann _level _message _args) =
    (_sem_Statement_Raise (_sem_Annotation _ann) _level _message (_sem_ScalarExprList _args))
_sem_Statement (NullStatement _ann) =
    (_sem_Statement_NullStatement (_sem_Annotation _ann))
_sem_Statement (Perform _ann _expr) =
    (_sem_Statement_Perform (_sem_Annotation _ann) (_sem_ScalarExpr _expr))
_sem_Statement (Execute _ann _expr) =
    (_sem_Statement_Execute (_sem_Annotation _ann) (_sem_ScalarExpr _expr))
_sem_Statement (ForQueryStatement _ann _lb _var _sel _sts) =
    (_sem_Statement_ForQueryStatement (_sem_Annotation _ann) _lb _var (_sem_QueryExpr _sel) (_sem_StatementList _sts))
_sem_Statement (ForIntegerStatement _ann _lb _var _from _to _sts) =
    (_sem_Statement_ForIntegerStatement (_sem_Annotation _ann) _lb _var (_sem_ScalarExpr _from) (_sem_ScalarExpr _to) (_sem_StatementList _sts))
_sem_Statement (LoopStatement _ann _lb _sts) =
    (_sem_Statement_LoopStatement (_sem_Annotation _ann) _lb (_sem_StatementList _sts))
_sem_Statement (WhileStatement _ann _lb _expr _sts) =
    (_sem_Statement_WhileStatement (_sem_Annotation _ann) _lb (_sem_ScalarExpr _expr) (_sem_StatementList _sts))
_sem_Statement (ContinueStatement _ann _lb) =
    (_sem_Statement_ContinueStatement (_sem_Annotation _ann) _lb)
_sem_Statement (ExitStatement _ann _lb) =
    (_sem_Statement_ExitStatement (_sem_Annotation _ann) _lb)
_sem_Statement (CaseStatementSimple _ann _val _cases _els) =
    (_sem_Statement_CaseStatementSimple (_sem_Annotation _ann) (_sem_ScalarExpr _val) (_sem_ScalarExprListStatementListTripleList _cases) (_sem_StatementList _els))
_sem_Statement (CaseStatement _ann _cases _els) =
    (_sem_Statement_CaseStatement (_sem_Annotation _ann) (_sem_ScalarExprListStatementListTripleList _cases) (_sem_StatementList _els))
_sem_Statement (If _ann _cases _els) =
    (_sem_Statement_If (_sem_Annotation _ann) (_sem_ScalarExprStatementListPairList _cases) (_sem_StatementList _els))
_sem_Statement (Block _ann _lb _vars _sts) =
    (_sem_Statement_Block (_sem_Annotation _ann) _lb (_sem_VarDefList _vars) (_sem_StatementList _sts))
_sem_Statement (AntiStatement _string) =
    (_sem_Statement_AntiStatement _string)
_sem_Statement (DeclareStatement _ann _ds) =
    (_sem_Statement_DeclareStatement (_sem_Annotation _ann) _ds)
_sem_Statement (ExecStatement _ann _spName _args) =
    (_sem_Statement_ExecStatement (_sem_Annotation _ann) (_sem_Name _spName) (_sem_ScalarExprList _args))
_sem_Statement (CreateIndexTSQL _ann _nm _obj _cols) =
    (_sem_Statement_CreateIndexTSQL (_sem_Annotation _ann) _nm (_sem_Name _obj) _cols)
-- semantic domain
type T_Statement = Catalog ->
                   TypeCheckFlags ->
                   (Maybe TypeExtra) ->
                   ( Statement,Statement)
data Inh_Statement = Inh_Statement {_cat_Inh_Statement :: Catalog,_flags_Inh_Statement :: TypeCheckFlags,_imCast_Inh_Statement :: (Maybe TypeExtra)}
data Syn_Statement = Syn_Statement {_annotatedTree_Syn_Statement :: Statement,_originalTree_Syn_Statement :: Statement}
_wrap_Statement :: T_Statement ->
                  Inh_Statement ->
                  Syn_Statement
_wrap_Statement sem (Inh_Statement _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_Statement _lhsOannotatedTree _lhsOoriginalTree))
_sem_Statement_QueryStatement :: T_Annotation ->
                                T_QueryExpr ->
                                T_Statement
_sem_Statement_QueryStatement ann_ ex_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _exOexpectedType :: (Maybe [TypeExtra])
              _exOouterDownEnv :: (Maybe Environment)
              _exOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _exOcat :: Catalog
              _exOflags :: TypeCheckFlags
              _exOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exIannotatedTree :: QueryExpr
              _exIoriginalTree :: QueryExpr
              _exIupType :: (Maybe [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 13, column 5)
              _annOtpe =
                  ({-# LINE 13 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag" #-}
                   Left []
                   {-# LINE 19671 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 16, column 5)
              _exOexpectedType =
                  ({-# LINE 16 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag" #-}
                   liftM (map snd) _exIupType
                   {-# LINE 19677 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 91, column 20)
              _exOouterDownEnv =
                  ({-# LINE 91 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   Nothing
                   {-# LINE 19683 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 837, column 32)
              _exOassignmentCastContext =
                  ({-# LINE 837 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 19689 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   QueryStatement _annIannotatedTree _exIannotatedTree
                   {-# LINE 19695 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   QueryStatement _annIoriginalTree _exIoriginalTree
                   {-# LINE 19701 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 19707 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 19713 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 19719 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 19725 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 19731 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 19737 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 19743 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 19749 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exIannotatedTree,_exIoriginalTree,_exIupType) =
                  ex_ _exOassignmentCastContext _exOcat _exOexpectedType _exOflags _exOimCast _exOouterDownEnv
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_Insert :: T_Annotation ->
                        T_Name ->
                        ([NameComponent]) ->
                        T_QueryExpr ->
                        T_MaybeSelectList ->
                        T_Statement
_sem_Statement_Insert ann_ table_ targetCols_ insData_ returning_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _tpe :: (Either [TypeError] [TypeExtra])
              _tableOtpe :: (Either [TypeError] TypeExtra)
              _insDataOexpectedType :: (Maybe [TypeExtra])
              _insDataOouterDownEnv :: (Maybe Environment)
              _tooManyCols :: (Maybe [TypeError])
              _insDataOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _tableOcat :: Catalog
              _tableOflags :: TypeCheckFlags
              _tableOimCast :: (Maybe TypeExtra)
              _insDataOcat :: Catalog
              _insDataOflags :: TypeCheckFlags
              _insDataOimCast :: (Maybe TypeExtra)
              _returningOcat :: Catalog
              _returningOflags :: TypeCheckFlags
              _returningOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _tableIannotatedTree :: Name
              _tableIoriginalTree :: Name
              _insDataIannotatedTree :: QueryExpr
              _insDataIoriginalTree :: QueryExpr
              _insDataIupType :: (Maybe [(Text,TypeExtra)])
              _returningIannotatedTree :: MaybeSelectList
              _returningIoriginalTree :: MaybeSelectList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag"(line 19, column 5)
              _annOtpe =
                  ({-# LINE 19 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag" #-}
                   Left []
                   {-# LINE 19800 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag"(line 25, column 5)
              _tpe =
                  ({-# LINE 25 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag" #-}
                   do
                   let tnm = nameComponents _tableIoriginalTree
                   (_,pub,_) <- catLookupTableAndAttrs _lhsIcat tnm
                   case targetCols_ of
                        []  -> return $ map snd pub
                        tcs -> do
                               tcs' <- mapM xnmcString tcs
                               let utcs' = nub tcs'
                               when (length utcs' /= length tcs') $
                                   Left $ map DuplicateColumnName
                                        $ nub (tcs' \\ utcs')
                               forM tcs' $ \x ->
                                   maybe (Left [UnrecognisedIdentifier x])
                                         Right $ lookup x pub
                   {-# LINE 19819 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag"(line 44, column 5)
              _tableOtpe =
                  ({-# LINE 44 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag" #-}
                   Left (either id (const []) _tpe
                         ++ maybe [] id _tooManyCols    )
                   {-# LINE 19826 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag"(line 47, column 5)
              _insDataOexpectedType =
                  ({-# LINE 47 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 19832 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag"(line 49, column 5)
              _insDataOouterDownEnv =
                  ({-# LINE 49 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag" #-}
                   Nothing
                   {-# LINE 19838 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag"(line 54, column 5)
              _tooManyCols =
                  ({-# LINE 54 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag" #-}
                   do
                   x <- _insDataIupType
                   y <- either (const Nothing) Just _tpe
                   if (length x > length y)
                       then Just [TooManyColumnsInInsert]
                       else Nothing
                   {-# LINE 19849 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 835, column 24)
              _insDataOassignmentCastContext =
                  ({-# LINE 835 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 19855 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Insert _annIannotatedTree _tableIannotatedTree targetCols_ _insDataIannotatedTree _returningIannotatedTree
                   {-# LINE 19861 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Insert _annIoriginalTree _tableIoriginalTree targetCols_ _insDataIoriginalTree _returningIoriginalTree
                   {-# LINE 19867 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 19873 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 19879 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 19885 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 19891 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 19897 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 19903 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 19909 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 19915 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _insDataOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 19921 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _insDataOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 19927 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _insDataOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 19933 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _returningOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 19939 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _returningOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 19945 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _returningOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 19951 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _tableIannotatedTree,_tableIoriginalTree) =
                  table_ _tableOcat _tableOflags _tableOimCast _tableOtpe
              ( _insDataIannotatedTree,_insDataIoriginalTree,_insDataIupType) =
                  insData_ _insDataOassignmentCastContext _insDataOcat _insDataOexpectedType _insDataOflags _insDataOimCast _insDataOouterDownEnv
              ( _returningIannotatedTree,_returningIoriginalTree) =
                  returning_ _returningOcat _returningOflags _returningOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_Update :: T_Annotation ->
                        T_Name ->
                        T_SetClauseList ->
                        T_TableRefList ->
                        T_MaybeBoolExpr ->
                        T_MaybeSelectList ->
                        T_Statement
_sem_Statement_Update ann_ table_ assigns_ fromList_ whr_ returning_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _tableOtpe :: (Either [TypeError] TypeExtra)
              _whrOdownEnv :: Environment
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _tableOcat :: Catalog
              _tableOflags :: TypeCheckFlags
              _tableOimCast :: (Maybe TypeExtra)
              _assignsOcat :: Catalog
              _assignsOflags :: TypeCheckFlags
              _assignsOimCast :: (Maybe TypeExtra)
              _fromListOcat :: Catalog
              _fromListOflags :: TypeCheckFlags
              _fromListOimCast :: (Maybe TypeExtra)
              _whrOcat :: Catalog
              _whrOflags :: TypeCheckFlags
              _whrOimCast :: (Maybe TypeExtra)
              _returningOcat :: Catalog
              _returningOflags :: TypeCheckFlags
              _returningOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _tableIannotatedTree :: Name
              _tableIoriginalTree :: Name
              _assignsIannotatedTree :: SetClauseList
              _assignsIoriginalTree :: SetClauseList
              _fromListIannotatedTree :: TableRefList
              _fromListIoriginalTree :: TableRefList
              _fromListIupEnv :: Environment
              _whrIannotatedTree :: MaybeBoolExpr
              _whrIoriginalTree :: MaybeBoolExpr
              _returningIannotatedTree :: MaybeSelectList
              _returningIoriginalTree :: MaybeSelectList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 219, column 24)
              _tableOtpe =
                  ({-# LINE 219 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 20013 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 220, column 24)
              _whrOdownEnv =
                  ({-# LINE 220 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 20019 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag"(line 19, column 5)
              _annOtpe =
                  ({-# LINE 19 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag" #-}
                   Left []
                   {-# LINE 20025 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Update _annIannotatedTree _tableIannotatedTree _assignsIannotatedTree _fromListIannotatedTree _whrIannotatedTree _returningIannotatedTree
                   {-# LINE 20031 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Update _annIoriginalTree _tableIoriginalTree _assignsIoriginalTree _fromListIoriginalTree _whrIoriginalTree _returningIoriginalTree
                   {-# LINE 20037 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 20043 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 20049 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20055 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20061 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20067 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20073 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20079 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20085 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _assignsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20091 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _assignsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20097 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _assignsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20103 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fromListOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20109 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fromListOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20115 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fromListOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20121 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _whrOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20127 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _whrOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20133 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _whrOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20139 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _returningOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20145 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _returningOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20151 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _returningOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20157 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _tableIannotatedTree,_tableIoriginalTree) =
                  table_ _tableOcat _tableOflags _tableOimCast _tableOtpe
              ( _assignsIannotatedTree,_assignsIoriginalTree) =
                  assigns_ _assignsOcat _assignsOflags _assignsOimCast
              ( _fromListIannotatedTree,_fromListIoriginalTree,_fromListIupEnv) =
                  fromList_ _fromListOcat _fromListOflags _fromListOimCast
              ( _whrIannotatedTree,_whrIoriginalTree) =
                  whr_ _whrOcat _whrOdownEnv _whrOflags _whrOimCast
              ( _returningIannotatedTree,_returningIoriginalTree) =
                  returning_ _returningOcat _returningOflags _returningOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_Delete :: T_Annotation ->
                        T_Name ->
                        T_TableRefList ->
                        T_MaybeBoolExpr ->
                        T_MaybeSelectList ->
                        T_Statement
_sem_Statement_Delete ann_ table_ using_ whr_ returning_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _tableOtpe :: (Either [TypeError] TypeExtra)
              _whrOdownEnv :: Environment
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _tableOcat :: Catalog
              _tableOflags :: TypeCheckFlags
              _tableOimCast :: (Maybe TypeExtra)
              _usingOcat :: Catalog
              _usingOflags :: TypeCheckFlags
              _usingOimCast :: (Maybe TypeExtra)
              _whrOcat :: Catalog
              _whrOflags :: TypeCheckFlags
              _whrOimCast :: (Maybe TypeExtra)
              _returningOcat :: Catalog
              _returningOflags :: TypeCheckFlags
              _returningOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _tableIannotatedTree :: Name
              _tableIoriginalTree :: Name
              _usingIannotatedTree :: TableRefList
              _usingIoriginalTree :: TableRefList
              _usingIupEnv :: Environment
              _whrIannotatedTree :: MaybeBoolExpr
              _whrIoriginalTree :: MaybeBoolExpr
              _returningIannotatedTree :: MaybeSelectList
              _returningIoriginalTree :: MaybeSelectList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 170, column 24)
              _tableOtpe =
                  ({-# LINE 170 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 20217 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 171, column 24)
              _whrOdownEnv =
                  ({-# LINE 171 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 20223 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag"(line 19, column 5)
              _annOtpe =
                  ({-# LINE 19 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag" #-}
                   Left []
                   {-# LINE 20229 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Delete _annIannotatedTree _tableIannotatedTree _usingIannotatedTree _whrIannotatedTree _returningIannotatedTree
                   {-# LINE 20235 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Delete _annIoriginalTree _tableIoriginalTree _usingIoriginalTree _whrIoriginalTree _returningIoriginalTree
                   {-# LINE 20241 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 20247 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 20253 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20259 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20265 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20271 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20277 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20283 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20289 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _usingOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20295 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _usingOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20301 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _usingOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20307 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _whrOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20313 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _whrOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20319 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _whrOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20325 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _returningOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20331 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _returningOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20337 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _returningOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20343 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _tableIannotatedTree,_tableIoriginalTree) =
                  table_ _tableOcat _tableOflags _tableOimCast _tableOtpe
              ( _usingIannotatedTree,_usingIoriginalTree,_usingIupEnv) =
                  using_ _usingOcat _usingOflags _usingOimCast
              ( _whrIannotatedTree,_whrIoriginalTree) =
                  whr_ _whrOcat _whrOdownEnv _whrOflags _whrOimCast
              ( _returningIannotatedTree,_returningIoriginalTree) =
                  returning_ _returningOcat _returningOflags _returningOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CopyFrom :: T_Annotation ->
                          T_Name ->
                          ([NameComponent]) ->
                          CopyFromSource ->
                          ([CopyFromOption]) ->
                          T_Statement
_sem_Statement_CopyFrom ann_ table_ targetCols_ source_ opts_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _tableOtpe :: (Either [TypeError] TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _tableOcat :: Catalog
              _tableOflags :: TypeCheckFlags
              _tableOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _tableIannotatedTree :: Name
              _tableIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 137, column 26)
              _tableOtpe =
                  ({-# LINE 137 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 20384 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag"(line 19, column 5)
              _annOtpe =
                  ({-# LINE 19 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag" #-}
                   Left []
                   {-# LINE 20390 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CopyFrom _annIannotatedTree _tableIannotatedTree targetCols_ source_ opts_
                   {-# LINE 20396 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CopyFrom _annIoriginalTree _tableIoriginalTree targetCols_ source_ opts_
                   {-# LINE 20402 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 20408 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 20414 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20420 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20426 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20432 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20438 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20444 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tableOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20450 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _tableIannotatedTree,_tableIoriginalTree) =
                  table_ _tableOcat _tableOflags _tableOimCast _tableOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CopyData :: T_Annotation ->
                          String ->
                          T_Statement
_sem_Statement_CopyData ann_ insData_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 136, column 26)
              _annOtpe =
                  ({-# LINE 136 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 20476 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CopyData _annIannotatedTree insData_
                   {-# LINE 20482 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CopyData _annIoriginalTree insData_
                   {-# LINE 20488 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 20494 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 20500 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20506 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20512 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20518 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CopyTo :: T_Annotation ->
                        CopyToSource ->
                        String ->
                        ([CopyToOption]) ->
                        T_Statement
_sem_Statement_CopyTo ann_ cp_ fn_ opts_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag"(line 19, column 5)
              _annOtpe =
                  ({-# LINE 19 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag" #-}
                   Left []
                   {-# LINE 20544 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CopyTo _annIannotatedTree cp_ fn_ opts_
                   {-# LINE 20550 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CopyTo _annIoriginalTree cp_ fn_ opts_
                   {-# LINE 20556 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 20562 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 20568 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20574 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20580 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20586 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_Truncate :: T_Annotation ->
                          ([Name]) ->
                          RestartIdentity ->
                          Cascade ->
                          T_Statement
_sem_Statement_Truncate ann_ tables_ restartIdentity_ cascade_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag"(line 19, column 5)
              _annOtpe =
                  ({-# LINE 19 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Updates.ag" #-}
                   Left []
                   {-# LINE 20612 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Truncate _annIannotatedTree tables_ restartIdentity_ cascade_
                   {-# LINE 20618 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Truncate _annIoriginalTree tables_ restartIdentity_ cascade_
                   {-# LINE 20624 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 20630 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 20636 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20642 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20648 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20654 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CreateTable :: T_Annotation ->
                             T_Name ->
                             T_AttributeDefList ->
                             T_ConstraintList ->
                             T_MaybeTablePartitionDef ->
                             Replace ->
                             T_Statement
_sem_Statement_CreateTable ann_ name_ atts_ cons_ partition_ rep_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _nameOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nameOcat :: Catalog
              _nameOflags :: TypeCheckFlags
              _nameOimCast :: (Maybe TypeExtra)
              _attsOcat :: Catalog
              _attsOflags :: TypeCheckFlags
              _attsOimCast :: (Maybe TypeExtra)
              _consOcat :: Catalog
              _consOflags :: TypeCheckFlags
              _consOimCast :: (Maybe TypeExtra)
              _partitionOcat :: Catalog
              _partitionOflags :: TypeCheckFlags
              _partitionOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nameIannotatedTree :: Name
              _nameIoriginalTree :: Name
              _attsIannotatedTree :: AttributeDefList
              _attsIoriginalTree :: AttributeDefList
              _consIannotatedTree :: ConstraintList
              _consIoriginalTree :: ConstraintList
              _partitionIannotatedTree :: MaybeTablePartitionDef
              _partitionIoriginalTree :: MaybeTablePartitionDef
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 152, column 29)
              _annOtpe =
                  ({-# LINE 152 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 20703 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 153, column 29)
              _nameOtpe =
                  ({-# LINE 153 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 20709 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateTable _annIannotatedTree _nameIannotatedTree _attsIannotatedTree _consIannotatedTree _partitionIannotatedTree rep_
                   {-# LINE 20715 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateTable _annIoriginalTree _nameIoriginalTree _attsIoriginalTree _consIoriginalTree _partitionIoriginalTree rep_
                   {-# LINE 20721 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 20727 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 20733 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20739 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20745 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20751 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20757 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20763 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20769 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _attsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20775 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _attsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20781 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _attsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20787 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _consOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20793 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _consOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20799 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _consOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20805 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _partitionOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20811 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _partitionOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20817 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _partitionOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20823 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nameIannotatedTree,_nameIoriginalTree) =
                  name_ _nameOcat _nameOflags _nameOimCast _nameOtpe
              ( _attsIannotatedTree,_attsIoriginalTree) =
                  atts_ _attsOcat _attsOflags _attsOimCast
              ( _consIannotatedTree,_consIoriginalTree) =
                  cons_ _consOcat _consOflags _consOimCast
              ( _partitionIannotatedTree,_partitionIoriginalTree) =
                  partition_ _partitionOcat _partitionOflags _partitionOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_AlterTable :: T_Annotation ->
                            T_Name ->
                            T_AlterTableOperation ->
                            T_Statement
_sem_Statement_AlterTable ann_ name_ operation_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _nameOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nameOcat :: Catalog
              _nameOflags :: TypeCheckFlags
              _nameOimCast :: (Maybe TypeExtra)
              _operationOcat :: Catalog
              _operationOflags :: TypeCheckFlags
              _operationOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nameIannotatedTree :: Name
              _nameIoriginalTree :: Name
              _operationIannotatedTree :: AlterTableOperation
              _operationIoriginalTree :: AlterTableOperation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 117, column 28)
              _annOtpe =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 20867 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 118, column 28)
              _nameOtpe =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 20873 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterTable _annIannotatedTree _nameIannotatedTree _operationIannotatedTree
                   {-# LINE 20879 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterTable _annIoriginalTree _nameIoriginalTree _operationIoriginalTree
                   {-# LINE 20885 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 20891 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 20897 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20903 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20909 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20915 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20921 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20927 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20933 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _operationOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 20939 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _operationOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 20945 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _operationOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 20951 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nameIannotatedTree,_nameIoriginalTree) =
                  name_ _nameOcat _nameOflags _nameOimCast _nameOtpe
              ( _operationIannotatedTree,_operationIoriginalTree) =
                  operation_ _operationOcat _operationOflags _operationOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_AlterDatabase :: T_Annotation ->
                               T_Name ->
                               T_AlterDatabaseOperation ->
                               T_Statement
_sem_Statement_AlterDatabase ann_ name_ operation_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _nameOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nameOcat :: Catalog
              _nameOflags :: TypeCheckFlags
              _nameOimCast :: (Maybe TypeExtra)
              _operationOcat :: Catalog
              _operationOflags :: TypeCheckFlags
              _operationOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nameIannotatedTree :: Name
              _nameIoriginalTree :: Name
              _operationIannotatedTree :: AlterDatabaseOperation
              _operationIoriginalTree :: AlterDatabaseOperation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 110, column 31)
              _annOtpe =
                  ({-# LINE 110 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 20991 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 111, column 31)
              _nameOtpe =
                  ({-# LINE 111 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 20997 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterDatabase _annIannotatedTree _nameIannotatedTree _operationIannotatedTree
                   {-# LINE 21003 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterDatabase _annIoriginalTree _nameIoriginalTree _operationIoriginalTree
                   {-# LINE 21009 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 21015 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 21021 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21027 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21033 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21039 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21045 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21051 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21057 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _operationOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21063 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _operationOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21069 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _operationOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21075 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nameIannotatedTree,_nameIoriginalTree) =
                  name_ _nameOcat _nameOflags _nameOimCast _nameOtpe
              ( _operationIannotatedTree,_operationIoriginalTree) =
                  operation_ _operationOcat _operationOflags _operationOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CreateSequence :: T_Annotation ->
                                T_Name ->
                                Integer ->
                                (Maybe Integer) ->
                                (Maybe Integer) ->
                                Integer ->
                                Integer ->
                                T_Statement
_sem_Statement_CreateSequence ann_ name_ incr_ min_ max_ start_ cache_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _nameOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nameOcat :: Catalog
              _nameOflags :: TypeCheckFlags
              _nameOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nameIannotatedTree :: Name
              _nameIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 150, column 32)
              _annOtpe =
                  ({-# LINE 150 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 21114 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 151, column 32)
              _nameOtpe =
                  ({-# LINE 151 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 21120 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateSequence _annIannotatedTree _nameIannotatedTree incr_ min_ max_ start_ cache_
                   {-# LINE 21126 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateSequence _annIoriginalTree _nameIoriginalTree incr_ min_ max_ start_ cache_
                   {-# LINE 21132 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 21138 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 21144 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21150 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21156 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21162 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21168 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21174 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21180 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nameIannotatedTree,_nameIoriginalTree) =
                  name_ _nameOcat _nameOflags _nameOimCast _nameOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_AlterSequence :: T_Annotation ->
                               T_Name ->
                               T_AlterSequenceOperation ->
                               T_Statement
_sem_Statement_AlterSequence ann_ name_ operation_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _nameOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nameOcat :: Catalog
              _nameOflags :: TypeCheckFlags
              _nameOimCast :: (Maybe TypeExtra)
              _operationOcat :: Catalog
              _operationOflags :: TypeCheckFlags
              _operationOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nameIannotatedTree :: Name
              _nameIoriginalTree :: Name
              _operationIannotatedTree :: AlterSequenceOperation
              _operationIoriginalTree :: AlterSequenceOperation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 115, column 31)
              _annOtpe =
                  ({-# LINE 115 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 21218 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 116, column 31)
              _nameOtpe =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 21224 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequence _annIannotatedTree _nameIannotatedTree _operationIannotatedTree
                   {-# LINE 21230 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSequence _annIoriginalTree _nameIoriginalTree _operationIoriginalTree
                   {-# LINE 21236 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 21242 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 21248 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21254 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21260 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21266 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21272 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21278 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21284 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _operationOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21290 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _operationOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21296 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _operationOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21302 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nameIannotatedTree,_nameIoriginalTree) =
                  name_ _nameOcat _nameOflags _nameOimCast _nameOtpe
              ( _operationIannotatedTree,_operationIoriginalTree) =
                  operation_ _operationOcat _operationOflags _operationOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CreateTableAs :: T_Annotation ->
                               T_Name ->
                               Replace ->
                               T_QueryExpr ->
                               T_Statement
_sem_Statement_CreateTableAs ann_ name_ rep_ expr_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _exprOouterDownEnv :: (Maybe Environment)
              _nameOtpe :: (Either [TypeError] TypeExtra)
              _exprOexpectedType :: (Maybe [TypeExtra])
              _exprOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nameOcat :: Catalog
              _nameOflags :: TypeCheckFlags
              _nameOimCast :: (Maybe TypeExtra)
              _exprOcat :: Catalog
              _exprOflags :: TypeCheckFlags
              _exprOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nameIannotatedTree :: Name
              _nameIoriginalTree :: Name
              _exprIannotatedTree :: QueryExpr
              _exprIoriginalTree :: QueryExpr
              _exprIupType :: (Maybe [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 154, column 31)
              _annOtpe =
                  ({-# LINE 154 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 21347 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 155, column 31)
              _exprOouterDownEnv =
                  ({-# LINE 155 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 21353 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 156, column 31)
              _nameOtpe =
                  ({-# LINE 156 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 21359 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 19, column 5)
              _exprOexpectedType =
                  ({-# LINE 19 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag" #-}
                   liftM (map snd) _exprIupType
                   {-# LINE 21365 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 827, column 31)
              _exprOassignmentCastContext =
                  ({-# LINE 827 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 21371 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateTableAs _annIannotatedTree _nameIannotatedTree rep_ _exprIannotatedTree
                   {-# LINE 21377 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateTableAs _annIoriginalTree _nameIoriginalTree rep_ _exprIoriginalTree
                   {-# LINE 21383 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 21389 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 21395 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21401 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21407 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21413 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21419 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21425 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21431 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21437 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21443 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21449 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nameIannotatedTree,_nameIoriginalTree) =
                  name_ _nameOcat _nameOflags _nameOimCast _nameOtpe
              ( _exprIannotatedTree,_exprIoriginalTree,_exprIupType) =
                  expr_ _exprOassignmentCastContext _exprOcat _exprOexpectedType _exprOflags _exprOimCast _exprOouterDownEnv
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CreateView :: T_Annotation ->
                            T_Name ->
                            MaybeNameComponentList ->
                            T_QueryExpr ->
                            T_Statement
_sem_Statement_CreateView ann_ name_ colNames_ expr_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _exprOouterDownEnv :: (Maybe Environment)
              _nameOtpe :: (Either [TypeError] TypeExtra)
              _exprOexpectedType :: (Maybe [TypeExtra])
              _exprOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nameOcat :: Catalog
              _nameOflags :: TypeCheckFlags
              _nameOimCast :: (Maybe TypeExtra)
              _exprOcat :: Catalog
              _exprOflags :: TypeCheckFlags
              _exprOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nameIannotatedTree :: Name
              _nameIoriginalTree :: Name
              _exprIannotatedTree :: QueryExpr
              _exprIoriginalTree :: QueryExpr
              _exprIupType :: (Maybe [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 167, column 28)
              _annOtpe =
                  ({-# LINE 167 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 21494 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 168, column 28)
              _exprOouterDownEnv =
                  ({-# LINE 168 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 21500 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 169, column 28)
              _nameOtpe =
                  ({-# LINE 169 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 21506 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 19, column 5)
              _exprOexpectedType =
                  ({-# LINE 19 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag" #-}
                   liftM (map snd) _exprIupType
                   {-# LINE 21512 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 829, column 28)
              _exprOassignmentCastContext =
                  ({-# LINE 829 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 21518 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateView _annIannotatedTree _nameIannotatedTree colNames_ _exprIannotatedTree
                   {-# LINE 21524 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateView _annIoriginalTree _nameIoriginalTree colNames_ _exprIoriginalTree
                   {-# LINE 21530 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 21536 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 21542 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21548 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21554 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21560 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21566 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21572 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21578 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21584 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21590 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21596 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nameIannotatedTree,_nameIoriginalTree) =
                  name_ _nameOcat _nameOflags _nameOimCast _nameOtpe
              ( _exprIannotatedTree,_exprIoriginalTree,_exprIupType) =
                  expr_ _exprOassignmentCastContext _exprOcat _exprOexpectedType _exprOflags _exprOimCast _exprOouterDownEnv
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_AlterView :: T_Annotation ->
                           T_Name ->
                           MaybeNameComponentList ->
                           T_QueryExpr ->
                           T_Statement
_sem_Statement_AlterView ann_ name_ colNames_ expr_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _exprOexpectedType :: (Maybe [TypeExtra])
              _exprOouterDownEnv :: (Maybe Environment)
              _nameOtpe :: (Either [TypeError] TypeExtra)
              _exprOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nameOcat :: Catalog
              _nameOflags :: TypeCheckFlags
              _nameOimCast :: (Maybe TypeExtra)
              _exprOcat :: Catalog
              _exprOflags :: TypeCheckFlags
              _exprOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nameIannotatedTree :: Name
              _nameIoriginalTree :: Name
              _exprIannotatedTree :: QueryExpr
              _exprIoriginalTree :: QueryExpr
              _exprIupType :: (Maybe [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 121, column 27)
              _annOtpe =
                  ({-# LINE 121 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 21641 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 122, column 27)
              _exprOexpectedType =
                  ({-# LINE 122 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 21647 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 123, column 27)
              _exprOouterDownEnv =
                  ({-# LINE 123 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 21653 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 124, column 27)
              _nameOtpe =
                  ({-# LINE 124 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 21659 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 824, column 27)
              _exprOassignmentCastContext =
                  ({-# LINE 824 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 21665 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterView _annIannotatedTree _nameIannotatedTree colNames_ _exprIannotatedTree
                   {-# LINE 21671 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterView _annIoriginalTree _nameIoriginalTree colNames_ _exprIoriginalTree
                   {-# LINE 21677 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 21683 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 21689 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21695 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21701 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21707 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21713 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21719 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21725 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21731 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21737 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21743 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nameIannotatedTree,_nameIoriginalTree) =
                  name_ _nameOcat _nameOflags _nameOimCast _nameOtpe
              ( _exprIannotatedTree,_exprIoriginalTree,_exprIupType) =
                  expr_ _exprOassignmentCastContext _exprOcat _exprOexpectedType _exprOflags _exprOimCast _exprOouterDownEnv
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CreateType :: T_Annotation ->
                            T_Name ->
                            T_TypeAttributeDefList ->
                            T_Statement
_sem_Statement_CreateType ann_ name_ atts_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _nameOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nameOcat :: Catalog
              _nameOflags :: TypeCheckFlags
              _nameOimCast :: (Maybe TypeExtra)
              _attsOcat :: Catalog
              _attsOflags :: TypeCheckFlags
              _attsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nameIannotatedTree :: Name
              _nameIoriginalTree :: Name
              _attsIannotatedTree :: TypeAttributeDefList
              _attsIoriginalTree :: TypeAttributeDefList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 163, column 28)
              _annOtpe =
                  ({-# LINE 163 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 21783 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 164, column 28)
              _nameOtpe =
                  ({-# LINE 164 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 21789 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateType _annIannotatedTree _nameIannotatedTree _attsIannotatedTree
                   {-# LINE 21795 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateType _annIoriginalTree _nameIoriginalTree _attsIoriginalTree
                   {-# LINE 21801 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 21807 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 21813 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21819 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21825 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21831 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21837 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21843 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21849 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _attsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21855 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _attsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21861 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _attsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21867 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nameIannotatedTree,_nameIoriginalTree) =
                  name_ _nameOcat _nameOflags _nameOimCast _nameOtpe
              ( _attsIannotatedTree,_attsIoriginalTree) =
                  atts_ _attsOcat _attsOflags _attsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CreateUser :: T_Annotation ->
                            T_Name ->
                            String ->
                            T_Statement
_sem_Statement_CreateUser ann_ name_ password_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _nameOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nameOcat :: Catalog
              _nameOflags :: TypeCheckFlags
              _nameOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nameIannotatedTree :: Name
              _nameIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 165, column 28)
              _annOtpe =
                  ({-# LINE 165 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 21902 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 166, column 28)
              _nameOtpe =
                  ({-# LINE 166 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 21908 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateUser _annIannotatedTree _nameIannotatedTree password_
                   {-# LINE 21914 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateUser _annIoriginalTree _nameIoriginalTree password_
                   {-# LINE 21920 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 21926 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 21932 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21938 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21944 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21950 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 21956 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 21962 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 21968 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nameIannotatedTree,_nameIoriginalTree) =
                  name_ _nameOcat _nameOflags _nameOimCast _nameOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CreateLogin :: T_Annotation ->
                             T_Name ->
                             String ->
                             T_Statement
_sem_Statement_CreateLogin ann_ name_ password_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _nameOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nameOcat :: Catalog
              _nameOflags :: TypeCheckFlags
              _nameOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nameIannotatedTree :: Name
              _nameIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 147, column 29)
              _annOtpe =
                  ({-# LINE 147 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 22001 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 148, column 29)
              _nameOtpe =
                  ({-# LINE 148 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 22007 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateLogin _annIannotatedTree _nameIannotatedTree password_
                   {-# LINE 22013 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateLogin _annIoriginalTree _nameIoriginalTree password_
                   {-# LINE 22019 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 22025 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 22031 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22037 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22043 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22049 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22055 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22061 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22067 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nameIannotatedTree,_nameIoriginalTree) =
                  name_ _nameOcat _nameOflags _nameOimCast _nameOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_AlterUser :: T_Annotation ->
                           T_Name ->
                           String ->
                           T_Statement
_sem_Statement_AlterUser ann_ name_ password_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _nameOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nameOcat :: Catalog
              _nameOflags :: TypeCheckFlags
              _nameOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nameIannotatedTree :: Name
              _nameIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 119, column 27)
              _annOtpe =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 22100 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 120, column 27)
              _nameOtpe =
                  ({-# LINE 120 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 22106 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterUser _annIannotatedTree _nameIannotatedTree password_
                   {-# LINE 22112 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterUser _annIoriginalTree _nameIoriginalTree password_
                   {-# LINE 22118 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 22124 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 22130 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22136 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22142 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22148 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22154 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22160 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22166 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nameIannotatedTree,_nameIoriginalTree) =
                  name_ _nameOcat _nameOflags _nameOimCast _nameOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_AlterLogin :: T_Annotation ->
                            T_Name ->
                            String ->
                            T_Statement
_sem_Statement_AlterLogin ann_ name_ password_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _nameOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nameOcat :: Catalog
              _nameOflags :: TypeCheckFlags
              _nameOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nameIannotatedTree :: Name
              _nameIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 112, column 28)
              _annOtpe =
                  ({-# LINE 112 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 22199 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 113, column 28)
              _nameOtpe =
                  ({-# LINE 113 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 22205 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterLogin _annIannotatedTree _nameIannotatedTree password_
                   {-# LINE 22211 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterLogin _annIoriginalTree _nameIoriginalTree password_
                   {-# LINE 22217 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 22223 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 22229 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22235 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22241 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22247 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22253 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22259 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22265 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nameIannotatedTree,_nameIoriginalTree) =
                  name_ _nameOcat _nameOflags _nameOimCast _nameOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CreateSchema :: T_Annotation ->
                              NameComponent ->
                              (Maybe Name) ->
                              T_Statement
_sem_Statement_CreateSchema ann_ name_ owner_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 149, column 30)
              _annOtpe =
                  ({-# LINE 149 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 22292 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateSchema _annIannotatedTree name_ owner_
                   {-# LINE 22298 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateSchema _annIoriginalTree name_ owner_
                   {-# LINE 22304 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 22310 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 22316 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22322 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22328 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22334 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_AlterSchema :: T_Annotation ->
                             NameComponent ->
                             T_AlterSchemaOperation ->
                             T_Statement
_sem_Statement_AlterSchema ann_ name_ operation_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _operationOcat :: Catalog
              _operationOflags :: TypeCheckFlags
              _operationOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _operationIannotatedTree :: AlterSchemaOperation
              _operationIoriginalTree :: AlterSchemaOperation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 114, column 29)
              _annOtpe =
                  ({-# LINE 114 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 22364 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSchema _annIannotatedTree name_ _operationIannotatedTree
                   {-# LINE 22370 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AlterSchema _annIoriginalTree name_ _operationIoriginalTree
                   {-# LINE 22376 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 22382 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 22388 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22394 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22400 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22406 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _operationOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22412 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _operationOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22418 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _operationOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22424 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _operationIannotatedTree,_operationIoriginalTree) =
                  operation_ _operationOcat _operationOflags _operationOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CreateFunction :: T_Annotation ->
                                T_Name ->
                                T_ParamDefList ->
                                T_TypeName ->
                                Replace ->
                                Language ->
                                T_FnBody ->
                                Volatility ->
                                T_Statement
_sem_Statement_CreateFunction ann_ name_ params_ rettype_ rep_ lang_ body_ vol_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _nameOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nameOcat :: Catalog
              _nameOflags :: TypeCheckFlags
              _nameOimCast :: (Maybe TypeExtra)
              _paramsOcat :: Catalog
              _paramsOflags :: TypeCheckFlags
              _paramsOimCast :: (Maybe TypeExtra)
              _rettypeOcat :: Catalog
              _rettypeOflags :: TypeCheckFlags
              _rettypeOimCast :: (Maybe TypeExtra)
              _bodyOcat :: Catalog
              _bodyOflags :: TypeCheckFlags
              _bodyOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nameIannotatedTree :: Name
              _nameIoriginalTree :: Name
              _paramsIannotatedTree :: ParamDefList
              _paramsIoriginalTree :: ParamDefList
              _rettypeIannotatedTree :: TypeName
              _rettypeInamedType :: (Maybe TypeExtra)
              _rettypeIoriginalTree :: TypeName
              _bodyIannotatedTree :: FnBody
              _bodyIoriginalTree :: FnBody
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 143, column 32)
              _annOtpe =
                  ({-# LINE 143 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 22478 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 144, column 32)
              _nameOtpe =
                  ({-# LINE 144 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 22484 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateFunction _annIannotatedTree _nameIannotatedTree _paramsIannotatedTree _rettypeIannotatedTree rep_ lang_ _bodyIannotatedTree vol_
                   {-# LINE 22490 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateFunction _annIoriginalTree _nameIoriginalTree _paramsIoriginalTree _rettypeIoriginalTree rep_ lang_ _bodyIoriginalTree vol_
                   {-# LINE 22496 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 22502 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 22508 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22514 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22520 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22526 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22532 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22538 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22544 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _paramsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22550 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _paramsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22556 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _paramsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22562 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _rettypeOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22568 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _rettypeOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22574 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _rettypeOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22580 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _bodyOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22586 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _bodyOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22592 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _bodyOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22598 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nameIannotatedTree,_nameIoriginalTree) =
                  name_ _nameOcat _nameOflags _nameOimCast _nameOtpe
              ( _paramsIannotatedTree,_paramsIoriginalTree) =
                  params_ _paramsOcat _paramsOflags _paramsOimCast
              ( _rettypeIannotatedTree,_rettypeInamedType,_rettypeIoriginalTree) =
                  rettype_ _rettypeOcat _rettypeOflags _rettypeOimCast
              ( _bodyIannotatedTree,_bodyIoriginalTree) =
                  body_ _bodyOcat _bodyOflags _bodyOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CreateDomain :: T_Annotation ->
                              T_Name ->
                              T_TypeName ->
                              String ->
                              T_MaybeBoolExpr ->
                              T_Statement
_sem_Statement_CreateDomain ann_ name_ typ_ constraintName_ check_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _checkOdownEnv :: Environment
              _nameOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nameOcat :: Catalog
              _nameOflags :: TypeCheckFlags
              _nameOimCast :: (Maybe TypeExtra)
              _typOcat :: Catalog
              _typOflags :: TypeCheckFlags
              _typOimCast :: (Maybe TypeExtra)
              _checkOcat :: Catalog
              _checkOflags :: TypeCheckFlags
              _checkOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nameIannotatedTree :: Name
              _nameIoriginalTree :: Name
              _typIannotatedTree :: TypeName
              _typInamedType :: (Maybe TypeExtra)
              _typIoriginalTree :: TypeName
              _checkIannotatedTree :: MaybeBoolExpr
              _checkIoriginalTree :: MaybeBoolExpr
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 140, column 30)
              _annOtpe =
                  ({-# LINE 140 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 22651 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 141, column 30)
              _checkOdownEnv =
                  ({-# LINE 141 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 22657 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 142, column 30)
              _nameOtpe =
                  ({-# LINE 142 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 22663 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateDomain _annIannotatedTree _nameIannotatedTree _typIannotatedTree constraintName_ _checkIannotatedTree
                   {-# LINE 22669 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateDomain _annIoriginalTree _nameIoriginalTree _typIoriginalTree constraintName_ _checkIoriginalTree
                   {-# LINE 22675 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 22681 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 22687 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22693 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22699 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22705 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22711 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22717 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22723 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22729 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22735 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22741 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _checkOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22747 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _checkOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22753 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _checkOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22759 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nameIannotatedTree,_nameIoriginalTree) =
                  name_ _nameOcat _nameOflags _nameOimCast _nameOtpe
              ( _typIannotatedTree,_typInamedType,_typIoriginalTree) =
                  typ_ _typOcat _typOflags _typOimCast
              ( _checkIannotatedTree,_checkIoriginalTree) =
                  check_ _checkOcat _checkOdownEnv _checkOflags _checkOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CreateLanguage :: T_Annotation ->
                                String ->
                                T_Statement
_sem_Statement_CreateLanguage ann_ name_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 146, column 32)
              _annOtpe =
                  ({-# LINE 146 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 22789 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateLanguage _annIannotatedTree name_
                   {-# LINE 22795 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateLanguage _annIoriginalTree name_
                   {-# LINE 22801 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 22807 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 22813 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22819 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22825 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22831 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CreateTrigger :: T_Annotation ->
                               NameComponent ->
                               TriggerWhen ->
                               ([TriggerEvent]) ->
                               T_Name ->
                               TriggerFire ->
                               T_Name ->
                               T_ScalarExprList ->
                               T_Statement
_sem_Statement_CreateTrigger ann_ name_ wh_ events_ tbl_ firing_ fnName_ fnArgs_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _fnArgsOdownEnv :: Environment
              _fnArgsOexpectedCast :: Bool
              _fnArgsOexpectedTypes :: ([TypeExtra])
              _fnNameOtpe :: (Either [TypeError] TypeExtra)
              _tblOtpe :: (Either [TypeError] TypeExtra)
              _fnArgsOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _tblOcat :: Catalog
              _tblOflags :: TypeCheckFlags
              _tblOimCast :: (Maybe TypeExtra)
              _fnNameOcat :: Catalog
              _fnNameOflags :: TypeCheckFlags
              _fnNameOimCast :: (Maybe TypeExtra)
              _fnArgsOcat :: Catalog
              _fnArgsOflags :: TypeCheckFlags
              _fnArgsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _tblIannotatedTree :: Name
              _tblIoriginalTree :: Name
              _fnNameIannotatedTree :: Name
              _fnNameIoriginalTree :: Name
              _fnArgsIannotatedTree :: ScalarExprList
              _fnArgsIoriginalTree :: ScalarExprList
              _fnArgsIupTypes :: ([Maybe TypeExtra])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 157, column 31)
              _annOtpe =
                  ({-# LINE 157 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 22883 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 158, column 31)
              _fnArgsOdownEnv =
                  ({-# LINE 158 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 22889 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 159, column 31)
              _fnArgsOexpectedCast =
                  ({-# LINE 159 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 22895 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 160, column 31)
              _fnArgsOexpectedTypes =
                  ({-# LINE 160 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   []
                   {-# LINE 22901 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 161, column 31)
              _fnNameOtpe =
                  ({-# LINE 161 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 22907 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 162, column 31)
              _tblOtpe =
                  ({-# LINE 162 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 22913 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 828, column 31)
              _fnArgsOassignmentCastContext =
                  ({-# LINE 828 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 22919 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateTrigger _annIannotatedTree name_ wh_ events_ _tblIannotatedTree firing_ _fnNameIannotatedTree _fnArgsIannotatedTree
                   {-# LINE 22925 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateTrigger _annIoriginalTree name_ wh_ events_ _tblIoriginalTree firing_ _fnNameIoriginalTree _fnArgsIoriginalTree
                   {-# LINE 22931 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 22937 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 22943 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22949 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22955 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22961 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tblOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22967 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tblOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22973 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tblOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22979 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnNameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 22985 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnNameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 22991 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnNameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 22997 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnArgsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23003 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnArgsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23009 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnArgsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23015 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _tblIannotatedTree,_tblIoriginalTree) =
                  tbl_ _tblOcat _tblOflags _tblOimCast _tblOtpe
              ( _fnNameIannotatedTree,_fnNameIoriginalTree) =
                  fnName_ _fnNameOcat _fnNameOflags _fnNameOimCast _fnNameOtpe
              ( _fnArgsIannotatedTree,_fnArgsIoriginalTree,_fnArgsIupTypes) =
                  fnArgs_ _fnArgsOassignmentCastContext _fnArgsOcat _fnArgsOdownEnv _fnArgsOexpectedCast _fnArgsOexpectedTypes _fnArgsOflags _fnArgsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_DropFunction :: T_Annotation ->
                              IfExists ->
                              T_NameTypeNameListPairList ->
                              Cascade ->
                              T_Statement
_sem_Statement_DropFunction ann_ ifE_ sigs_ cascade_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _sigsOcat :: Catalog
              _sigsOflags :: TypeCheckFlags
              _sigsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _sigsIannotatedTree :: NameTypeNameListPairList
              _sigsIoriginalTree :: NameTypeNameListPairList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 172, column 30)
              _annOtpe =
                  ({-# LINE 172 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 23052 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   DropFunction _annIannotatedTree ifE_ _sigsIannotatedTree cascade_
                   {-# LINE 23058 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   DropFunction _annIoriginalTree ifE_ _sigsIoriginalTree cascade_
                   {-# LINE 23064 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 23070 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 23076 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23082 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23088 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23094 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _sigsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23100 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _sigsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23106 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _sigsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23112 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _sigsIannotatedTree,_sigsIoriginalTree) =
                  sigs_ _sigsOcat _sigsOflags _sigsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_DropSomething :: T_Annotation ->
                               DropType ->
                               IfExists ->
                               ([Name]) ->
                               Cascade ->
                               T_Statement
_sem_Statement_DropSomething ann_ dropType_ ifE_ names_ cascade_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 13, column 5)
              _annOtpe =
                  ({-# LINE 13 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag" #-}
                   Left []
                   {-# LINE 23141 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   DropSomething _annIannotatedTree dropType_ ifE_ names_ cascade_
                   {-# LINE 23147 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   DropSomething _annIoriginalTree dropType_ ifE_ names_ cascade_
                   {-# LINE 23153 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 23159 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 23165 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23171 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23177 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23183 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_DropTrigger :: T_Annotation ->
                             IfExists ->
                             NameComponent ->
                             T_Name ->
                             Cascade ->
                             T_Statement
_sem_Statement_DropTrigger ann_ ifE_ name_ tbl_ cascade_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _tblOtpe :: (Either [TypeError] TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _tblOcat :: Catalog
              _tblOflags :: TypeCheckFlags
              _tblOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _tblIannotatedTree :: Name
              _tblIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 173, column 29)
              _tblOtpe =
                  ({-# LINE 173 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 23216 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 13, column 5)
              _annOtpe =
                  ({-# LINE 13 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag" #-}
                   Left []
                   {-# LINE 23222 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   DropTrigger _annIannotatedTree ifE_ name_ _tblIannotatedTree cascade_
                   {-# LINE 23228 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   DropTrigger _annIoriginalTree ifE_ name_ _tblIoriginalTree cascade_
                   {-# LINE 23234 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 23240 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 23246 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23252 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23258 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23264 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tblOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23270 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tblOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23276 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tblOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23282 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _tblIannotatedTree,_tblIoriginalTree) =
                  tbl_ _tblOcat _tblOflags _tblOimCast _tblOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CreateDatabase :: T_Annotation ->
                                T_Name ->
                                T_Statement
_sem_Statement_CreateDatabase ann_ nm_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _nmOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _nmOcat :: Catalog
              _nmOflags :: TypeCheckFlags
              _nmOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _nmIannotatedTree :: Name
              _nmIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 138, column 32)
              _annOtpe =
                  ({-# LINE 138 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 23314 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 139, column 32)
              _nmOtpe =
                  ({-# LINE 139 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 23320 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateDatabase _annIannotatedTree _nmIannotatedTree
                   {-# LINE 23326 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateDatabase _annIoriginalTree _nmIoriginalTree
                   {-# LINE 23332 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 23338 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 23344 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23350 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23356 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23362 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nmOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23368 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nmOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23374 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _nmOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23380 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _nmIannotatedTree,_nmIoriginalTree) =
                  nm_ _nmOcat _nmOflags _nmOimCast _nmOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_Set :: T_Annotation ->
                     String ->
                     ([SetValue]) ->
                     T_Statement
_sem_Statement_Set ann_ name_ values_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 218, column 21)
              _annOtpe =
                  ({-# LINE 218 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 23407 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Set _annIannotatedTree name_ values_
                   {-# LINE 23413 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Set _annIoriginalTree name_ values_
                   {-# LINE 23419 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 23425 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 23431 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23437 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23443 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23449 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_Notify :: T_Annotation ->
                        String ->
                        T_Statement
_sem_Statement_Notify ann_ name_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 196, column 24)
              _annOtpe =
                  ({-# LINE 196 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 23473 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Notify _annIannotatedTree name_
                   {-# LINE 23479 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Notify _annIoriginalTree name_
                   {-# LINE 23485 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 23491 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 23497 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23503 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23509 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23515 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_Into :: T_Annotation ->
                      Bool ->
                      ([Name]) ->
                      T_Statement ->
                      T_Statement
_sem_Statement_Into ann_ strict_ into_ stmt_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _stmtOcat :: Catalog
              _stmtOflags :: TypeCheckFlags
              _stmtOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _stmtIannotatedTree :: Statement
              _stmtIoriginalTree :: Statement
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 13, column 5)
              _annOtpe =
                  ({-# LINE 13 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag" #-}
                   Left []
                   {-# LINE 23546 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Into _annIannotatedTree strict_ into_ _stmtIannotatedTree
                   {-# LINE 23552 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Into _annIoriginalTree strict_ into_ _stmtIoriginalTree
                   {-# LINE 23558 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 23564 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 23570 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23576 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23582 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23588 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stmtOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23594 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stmtOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23600 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stmtOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23606 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _stmtIannotatedTree,_stmtIoriginalTree) =
                  stmt_ _stmtOcat _stmtOflags _stmtOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_Assignment :: T_Annotation ->
                            T_Name ->
                            T_ScalarExpr ->
                            T_Statement
_sem_Statement_Assignment ann_ target_ value_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _valueOexpectedCast :: Bool
              _valueOexpectedType :: (Maybe TypeExtra)
              _valueOodbcFunction :: Bool
              _annOtpe :: (Either [TypeError] TypeExtra)
              _targetOtpe :: (Either [TypeError] TypeExtra)
              _valueOdownEnv :: Environment
              _valueOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _targetOcat :: Catalog
              _targetOflags :: TypeCheckFlags
              _targetOimCast :: (Maybe TypeExtra)
              _valueOcat :: Catalog
              _valueOflags :: TypeCheckFlags
              _valueOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _targetIannotatedTree :: Name
              _targetIoriginalTree :: Name
              _valueIannotatedTree :: ScalarExpr
              _valueIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _valueIoriginalTree :: ScalarExpr
              _valueIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 125, column 28)
              _valueOexpectedCast =
                  ({-# LINE 125 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 23651 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 126, column 28)
              _valueOexpectedType =
                  ({-# LINE 126 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 23657 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 127, column 28)
              _valueOodbcFunction =
                  ({-# LINE 127 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 23663 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 13, column 5)
              _annOtpe =
                  ({-# LINE 13 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag" #-}
                   Left []
                   {-# LINE 23669 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 26, column 5)
              _targetOtpe =
                  ({-# LINE 26 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag" #-}
                   Left []
                   {-# LINE 23675 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 27, column 5)
              _valueOdownEnv =
                  ({-# LINE 27 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 23681 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 825, column 28)
              _valueOassignmentCastContext =
                  ({-# LINE 825 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 23687 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Assignment _annIannotatedTree _targetIannotatedTree _valueIannotatedTree
                   {-# LINE 23693 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Assignment _annIoriginalTree _targetIoriginalTree _valueIoriginalTree
                   {-# LINE 23699 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 23705 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 23711 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23717 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23723 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23729 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _targetOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23735 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _targetOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23741 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _targetOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23747 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _valueOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23753 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _valueOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23759 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _valueOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23765 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _targetIannotatedTree,_targetIoriginalTree) =
                  target_ _targetOcat _targetOflags _targetOimCast _targetOtpe
              ( _valueIannotatedTree,_valueIcolExprs,_valueIoriginalTree,_valueIupType) =
                  value_ _valueOassignmentCastContext _valueOcat _valueOdownEnv _valueOexpectedCast _valueOexpectedType _valueOflags _valueOimCast _valueOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_Return :: T_Annotation ->
                        T_MaybeScalarExpr ->
                        T_Statement
_sem_Statement_Return ann_ value_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _valueOdownEnv :: Environment
              _valueOexpectedCast :: Bool
              _valueOexpectedType :: (Maybe TypeExtra)
              _valueOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _valueOcat :: Catalog
              _valueOflags :: TypeCheckFlags
              _valueOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _valueIannotatedTree :: MaybeScalarExpr
              _valueIoriginalTree :: MaybeScalarExpr
              _valueIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 207, column 24)
              _annOtpe =
                  ({-# LINE 207 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 23803 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 208, column 24)
              _valueOdownEnv =
                  ({-# LINE 208 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 23809 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 209, column 24)
              _valueOexpectedCast =
                  ({-# LINE 209 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 23815 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 210, column 24)
              _valueOexpectedType =
                  ({-# LINE 210 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 23821 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 839, column 24)
              _valueOassignmentCastContext =
                  ({-# LINE 839 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 23827 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Return _annIannotatedTree _valueIannotatedTree
                   {-# LINE 23833 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Return _annIoriginalTree _valueIoriginalTree
                   {-# LINE 23839 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 23845 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 23851 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23857 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23863 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23869 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _valueOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23875 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _valueOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23881 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _valueOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23887 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _valueIannotatedTree,_valueIoriginalTree,_valueIupType) =
                  value_ _valueOassignmentCastContext _valueOcat _valueOdownEnv _valueOexpectedCast _valueOexpectedType _valueOflags _valueOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_ReturnNext :: T_Annotation ->
                            T_ScalarExpr ->
                            T_Statement
_sem_Statement_ReturnNext ann_ expr_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _exprOdownEnv :: Environment
              _exprOexpectedCast :: Bool
              _exprOexpectedType :: (Maybe TypeExtra)
              _exprOodbcFunction :: Bool
              _exprOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _exprOcat :: Catalog
              _exprOflags :: TypeCheckFlags
              _exprOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exprIannotatedTree :: ScalarExpr
              _exprIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exprIoriginalTree :: ScalarExpr
              _exprIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 211, column 28)
              _annOtpe =
                  ({-# LINE 211 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 23925 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 212, column 28)
              _exprOdownEnv =
                  ({-# LINE 212 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 23931 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 213, column 28)
              _exprOexpectedCast =
                  ({-# LINE 213 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 23937 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 214, column 28)
              _exprOexpectedType =
                  ({-# LINE 214 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 23943 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 215, column 28)
              _exprOodbcFunction =
                  ({-# LINE 215 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 23949 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 840, column 28)
              _exprOassignmentCastContext =
                  ({-# LINE 840 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 23955 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ReturnNext _annIannotatedTree _exprIannotatedTree
                   {-# LINE 23961 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ReturnNext _annIoriginalTree _exprIoriginalTree
                   {-# LINE 23967 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 23973 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 23979 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 23985 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 23991 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 23997 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24003 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24009 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24015 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exprIannotatedTree,_exprIcolExprs,_exprIoriginalTree,_exprIupType) =
                  expr_ _exprOassignmentCastContext _exprOcat _exprOdownEnv _exprOexpectedCast _exprOexpectedType _exprOflags _exprOimCast _exprOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_ReturnQuery :: T_Annotation ->
                             T_QueryExpr ->
                             T_Statement
_sem_Statement_ReturnQuery ann_ sel_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _selOouterDownEnv :: (Maybe Environment)
              _selOexpectedType :: (Maybe [TypeExtra])
              _selOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _selOcat :: Catalog
              _selOflags :: TypeCheckFlags
              _selOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _selIannotatedTree :: QueryExpr
              _selIoriginalTree :: QueryExpr
              _selIupType :: (Maybe [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 216, column 29)
              _annOtpe =
                  ({-# LINE 216 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 24050 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 217, column 29)
              _selOouterDownEnv =
                  ({-# LINE 217 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 24056 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 22, column 5)
              _selOexpectedType =
                  ({-# LINE 22 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag" #-}
                   liftM (map snd) _selIupType
                   {-# LINE 24062 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 841, column 29)
              _selOassignmentCastContext =
                  ({-# LINE 841 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 24068 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ReturnQuery _annIannotatedTree _selIannotatedTree
                   {-# LINE 24074 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ReturnQuery _annIoriginalTree _selIoriginalTree
                   {-# LINE 24080 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 24086 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 24092 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24098 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24104 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24110 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24116 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24122 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24128 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _selIannotatedTree,_selIoriginalTree,_selIupType) =
                  sel_ _selOassignmentCastContext _selOcat _selOexpectedType _selOflags _selOimCast _selOouterDownEnv
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_Raise :: T_Annotation ->
                       RaiseType ->
                       String ->
                       T_ScalarExprList ->
                       T_Statement
_sem_Statement_Raise ann_ level_ message_ args_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _argsOdownEnv :: Environment
              _argsOexpectedCast :: Bool
              _argsOexpectedTypes :: ([TypeExtra])
              _argsOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _argsOcat :: Catalog
              _argsOflags :: TypeCheckFlags
              _argsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _argsIannotatedTree :: ScalarExprList
              _argsIoriginalTree :: ScalarExprList
              _argsIupTypes :: ([Maybe TypeExtra])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 203, column 23)
              _annOtpe =
                  ({-# LINE 203 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 24166 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 204, column 23)
              _argsOdownEnv =
                  ({-# LINE 204 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 24172 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 205, column 23)
              _argsOexpectedCast =
                  ({-# LINE 205 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 24178 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 206, column 23)
              _argsOexpectedTypes =
                  ({-# LINE 206 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   []
                   {-# LINE 24184 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 838, column 23)
              _argsOassignmentCastContext =
                  ({-# LINE 838 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 24190 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Raise _annIannotatedTree level_ message_ _argsIannotatedTree
                   {-# LINE 24196 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Raise _annIoriginalTree level_ message_ _argsIoriginalTree
                   {-# LINE 24202 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 24208 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 24214 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24220 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24226 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24232 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24238 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24244 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24250 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _argsIannotatedTree,_argsIoriginalTree,_argsIupTypes) =
                  args_ _argsOassignmentCastContext _argsOcat _argsOdownEnv _argsOexpectedCast _argsOexpectedTypes _argsOflags _argsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_NullStatement :: T_Annotation ->
                               T_Statement
_sem_Statement_NullStatement ann_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 197, column 31)
              _annOtpe =
                  ({-# LINE 197 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 24275 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   NullStatement _annIannotatedTree
                   {-# LINE 24281 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   NullStatement _annIoriginalTree
                   {-# LINE 24287 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 24293 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 24299 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24305 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24311 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24317 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_Perform :: T_Annotation ->
                         T_ScalarExpr ->
                         T_Statement
_sem_Statement_Perform ann_ expr_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _exprOdownEnv :: Environment
              _exprOexpectedCast :: Bool
              _exprOexpectedType :: (Maybe TypeExtra)
              _exprOodbcFunction :: Bool
              _exprOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _exprOcat :: Catalog
              _exprOflags :: TypeCheckFlags
              _exprOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exprIannotatedTree :: ScalarExpr
              _exprIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exprIoriginalTree :: ScalarExpr
              _exprIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 198, column 25)
              _annOtpe =
                  ({-# LINE 198 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 24353 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 199, column 25)
              _exprOdownEnv =
                  ({-# LINE 199 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 24359 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 200, column 25)
              _exprOexpectedCast =
                  ({-# LINE 200 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 24365 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 201, column 25)
              _exprOexpectedType =
                  ({-# LINE 201 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 24371 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 202, column 25)
              _exprOodbcFunction =
                  ({-# LINE 202 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 24377 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 836, column 25)
              _exprOassignmentCastContext =
                  ({-# LINE 836 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 24383 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Perform _annIannotatedTree _exprIannotatedTree
                   {-# LINE 24389 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Perform _annIoriginalTree _exprIoriginalTree
                   {-# LINE 24395 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 24401 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 24407 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24413 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24419 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24425 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24431 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24437 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24443 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exprIannotatedTree,_exprIcolExprs,_exprIoriginalTree,_exprIupType) =
                  expr_ _exprOassignmentCastContext _exprOcat _exprOdownEnv _exprOexpectedCast _exprOexpectedType _exprOflags _exprOimCast _exprOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_Execute :: T_Annotation ->
                         T_ScalarExpr ->
                         T_Statement
_sem_Statement_Execute ann_ expr_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _exprOdownEnv :: Environment
              _exprOexpectedCast :: Bool
              _exprOexpectedType :: (Maybe TypeExtra)
              _exprOodbcFunction :: Bool
              _exprOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _exprOcat :: Catalog
              _exprOflags :: TypeCheckFlags
              _exprOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exprIannotatedTree :: ScalarExpr
              _exprIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exprIoriginalTree :: ScalarExpr
              _exprIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 178, column 25)
              _annOtpe =
                  ({-# LINE 178 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 24481 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 179, column 25)
              _exprOdownEnv =
                  ({-# LINE 179 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 24487 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 180, column 25)
              _exprOexpectedCast =
                  ({-# LINE 180 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 24493 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 181, column 25)
              _exprOexpectedType =
                  ({-# LINE 181 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 24499 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 182, column 25)
              _exprOodbcFunction =
                  ({-# LINE 182 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 24505 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 831, column 25)
              _exprOassignmentCastContext =
                  ({-# LINE 831 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 24511 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Execute _annIannotatedTree _exprIannotatedTree
                   {-# LINE 24517 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Execute _annIoriginalTree _exprIoriginalTree
                   {-# LINE 24523 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 24529 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 24535 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24541 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24547 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24553 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24559 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24565 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24571 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exprIannotatedTree,_exprIcolExprs,_exprIoriginalTree,_exprIupType) =
                  expr_ _exprOassignmentCastContext _exprOcat _exprOdownEnv _exprOexpectedCast _exprOexpectedType _exprOflags _exprOimCast _exprOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_ForQueryStatement :: T_Annotation ->
                                   (Maybe String) ->
                                   NameComponent ->
                                   T_QueryExpr ->
                                   T_StatementList ->
                                   T_Statement
_sem_Statement_ForQueryStatement ann_ lb_ var_ sel_ sts_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _selOouterDownEnv :: (Maybe Environment)
              _selOexpectedType :: (Maybe [TypeExtra])
              _selOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _selOcat :: Catalog
              _selOflags :: TypeCheckFlags
              _selOimCast :: (Maybe TypeExtra)
              _stsOcat :: Catalog
              _stsOflags :: TypeCheckFlags
              _stsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _selIannotatedTree :: QueryExpr
              _selIoriginalTree :: QueryExpr
              _selIupType :: (Maybe [(Text,TypeExtra)])
              _stsIannotatedTree :: StatementList
              _stsIoriginalTree :: StatementList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 193, column 35)
              _annOtpe =
                  ({-# LINE 193 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 24614 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 194, column 35)
              _selOouterDownEnv =
                  ({-# LINE 194 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 24620 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 22, column 5)
              _selOexpectedType =
                  ({-# LINE 22 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag" #-}
                   liftM (map snd) _selIupType
                   {-# LINE 24626 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 834, column 35)
              _selOassignmentCastContext =
                  ({-# LINE 834 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 24632 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ForQueryStatement _annIannotatedTree lb_ var_ _selIannotatedTree _stsIannotatedTree
                   {-# LINE 24638 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ForQueryStatement _annIoriginalTree lb_ var_ _selIoriginalTree _stsIoriginalTree
                   {-# LINE 24644 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 24650 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 24656 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24662 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24668 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24674 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24680 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24686 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24692 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24698 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24704 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24710 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _selIannotatedTree,_selIoriginalTree,_selIupType) =
                  sel_ _selOassignmentCastContext _selOcat _selOexpectedType _selOflags _selOimCast _selOouterDownEnv
              ( _stsIannotatedTree,_stsIoriginalTree) =
                  sts_ _stsOcat _stsOflags _stsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_ForIntegerStatement :: T_Annotation ->
                                     (Maybe String) ->
                                     NameComponent ->
                                     T_ScalarExpr ->
                                     T_ScalarExpr ->
                                     T_StatementList ->
                                     T_Statement
_sem_Statement_ForIntegerStatement ann_ lb_ var_ from_ to_ sts_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _fromOdownEnv :: Environment
              _fromOexpectedCast :: Bool
              _fromOexpectedType :: (Maybe TypeExtra)
              _fromOodbcFunction :: Bool
              _toOdownEnv :: Environment
              _toOexpectedCast :: Bool
              _toOexpectedType :: (Maybe TypeExtra)
              _toOodbcFunction :: Bool
              _fromOassignmentCastContext :: Bool
              _toOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _fromOcat :: Catalog
              _fromOflags :: TypeCheckFlags
              _fromOimCast :: (Maybe TypeExtra)
              _toOcat :: Catalog
              _toOflags :: TypeCheckFlags
              _toOimCast :: (Maybe TypeExtra)
              _stsOcat :: Catalog
              _stsOflags :: TypeCheckFlags
              _stsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _fromIannotatedTree :: ScalarExpr
              _fromIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _fromIoriginalTree :: ScalarExpr
              _fromIupType :: (Maybe TypeExtra)
              _toIannotatedTree :: ScalarExpr
              _toIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _toIoriginalTree :: ScalarExpr
              _toIupType :: (Maybe TypeExtra)
              _stsIannotatedTree :: StatementList
              _stsIoriginalTree :: StatementList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 184, column 37)
              _annOtpe =
                  ({-# LINE 184 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 24771 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 185, column 37)
              _fromOdownEnv =
                  ({-# LINE 185 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 24777 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 186, column 37)
              _fromOexpectedCast =
                  ({-# LINE 186 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 24783 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 187, column 37)
              _fromOexpectedType =
                  ({-# LINE 187 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 24789 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 188, column 37)
              _fromOodbcFunction =
                  ({-# LINE 188 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 24795 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 189, column 37)
              _toOdownEnv =
                  ({-# LINE 189 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 24801 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 190, column 37)
              _toOexpectedCast =
                  ({-# LINE 190 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 24807 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 191, column 37)
              _toOexpectedType =
                  ({-# LINE 191 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 24813 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 192, column 37)
              _toOodbcFunction =
                  ({-# LINE 192 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 24819 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 832, column 37)
              _fromOassignmentCastContext =
                  ({-# LINE 832 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 24825 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 833, column 37)
              _toOassignmentCastContext =
                  ({-# LINE 833 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 24831 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ForIntegerStatement _annIannotatedTree lb_ var_ _fromIannotatedTree _toIannotatedTree _stsIannotatedTree
                   {-# LINE 24837 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ForIntegerStatement _annIoriginalTree lb_ var_ _fromIoriginalTree _toIoriginalTree _stsIoriginalTree
                   {-# LINE 24843 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 24849 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 24855 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24861 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24867 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24873 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fromOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24879 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fromOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24885 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fromOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24891 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _toOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24897 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _toOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24903 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _toOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24909 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24915 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24921 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 24927 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _fromIannotatedTree,_fromIcolExprs,_fromIoriginalTree,_fromIupType) =
                  from_ _fromOassignmentCastContext _fromOcat _fromOdownEnv _fromOexpectedCast _fromOexpectedType _fromOflags _fromOimCast _fromOodbcFunction
              ( _toIannotatedTree,_toIcolExprs,_toIoriginalTree,_toIupType) =
                  to_ _toOassignmentCastContext _toOcat _toOdownEnv _toOexpectedCast _toOexpectedType _toOflags _toOimCast _toOodbcFunction
              ( _stsIannotatedTree,_stsIoriginalTree) =
                  sts_ _stsOcat _stsOflags _stsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_LoopStatement :: T_Annotation ->
                               (Maybe String) ->
                               T_StatementList ->
                               T_Statement
_sem_Statement_LoopStatement ann_ lb_ sts_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _stsOcat :: Catalog
              _stsOflags :: TypeCheckFlags
              _stsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _stsIannotatedTree :: StatementList
              _stsIoriginalTree :: StatementList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 195, column 31)
              _annOtpe =
                  ({-# LINE 195 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 24963 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   LoopStatement _annIannotatedTree lb_ _stsIannotatedTree
                   {-# LINE 24969 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   LoopStatement _annIoriginalTree lb_ _stsIoriginalTree
                   {-# LINE 24975 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 24981 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 24987 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 24993 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 24999 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25005 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25011 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25017 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25023 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _stsIannotatedTree,_stsIoriginalTree) =
                  sts_ _stsOcat _stsOflags _stsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_WhileStatement :: T_Annotation ->
                                (Maybe String) ->
                                T_ScalarExpr ->
                                T_StatementList ->
                                T_Statement
_sem_Statement_WhileStatement ann_ lb_ expr_ sts_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _exprOdownEnv :: Environment
              _exprOexpectedCast :: Bool
              _exprOexpectedType :: (Maybe TypeExtra)
              _exprOodbcFunction :: Bool
              _exprOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _exprOcat :: Catalog
              _exprOflags :: TypeCheckFlags
              _exprOimCast :: (Maybe TypeExtra)
              _stsOcat :: Catalog
              _stsOflags :: TypeCheckFlags
              _stsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exprIannotatedTree :: ScalarExpr
              _exprIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _exprIoriginalTree :: ScalarExpr
              _exprIupType :: (Maybe TypeExtra)
              _stsIannotatedTree :: StatementList
              _stsIoriginalTree :: StatementList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 221, column 32)
              _annOtpe =
                  ({-# LINE 221 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 25068 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 222, column 32)
              _exprOdownEnv =
                  ({-# LINE 222 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 25074 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 223, column 32)
              _exprOexpectedCast =
                  ({-# LINE 223 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 25080 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 224, column 32)
              _exprOexpectedType =
                  ({-# LINE 224 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 25086 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 225, column 32)
              _exprOodbcFunction =
                  ({-# LINE 225 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 25092 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 842, column 32)
              _exprOassignmentCastContext =
                  ({-# LINE 842 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 25098 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   WhileStatement _annIannotatedTree lb_ _exprIannotatedTree _stsIannotatedTree
                   {-# LINE 25104 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   WhileStatement _annIoriginalTree lb_ _exprIoriginalTree _stsIoriginalTree
                   {-# LINE 25110 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 25116 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 25122 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25128 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25134 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25140 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25146 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25152 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exprOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25158 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25164 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25170 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25176 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exprIannotatedTree,_exprIcolExprs,_exprIoriginalTree,_exprIupType) =
                  expr_ _exprOassignmentCastContext _exprOcat _exprOdownEnv _exprOexpectedCast _exprOexpectedType _exprOflags _exprOimCast _exprOodbcFunction
              ( _stsIannotatedTree,_stsIoriginalTree) =
                  sts_ _stsOcat _stsOflags _stsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_ContinueStatement :: T_Annotation ->
                                   (Maybe String) ->
                                   T_Statement
_sem_Statement_ContinueStatement ann_ lb_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 135, column 35)
              _annOtpe =
                  ({-# LINE 135 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 25204 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ContinueStatement _annIannotatedTree lb_
                   {-# LINE 25210 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ContinueStatement _annIoriginalTree lb_
                   {-# LINE 25216 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 25222 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 25228 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25234 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25240 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25246 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_ExitStatement :: T_Annotation ->
                               (Maybe String) ->
                               T_Statement
_sem_Statement_ExitStatement ann_ lb_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 183, column 31)
              _annOtpe =
                  ({-# LINE 183 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 25270 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ExitStatement _annIannotatedTree lb_
                   {-# LINE 25276 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ExitStatement _annIoriginalTree lb_
                   {-# LINE 25282 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 25288 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 25294 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25300 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25306 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25312 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CaseStatementSimple :: T_Annotation ->
                                     T_ScalarExpr ->
                                     T_ScalarExprListStatementListTripleList ->
                                     T_StatementList ->
                                     T_Statement
_sem_Statement_CaseStatementSimple ann_ val_ cases_ els_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _valOdownEnv :: Environment
              _valOexpectedCast :: Bool
              _valOexpectedType :: (Maybe TypeExtra)
              _valOodbcFunction :: Bool
              _valOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _valOcat :: Catalog
              _valOflags :: TypeCheckFlags
              _valOimCast :: (Maybe TypeExtra)
              _casesOcat :: Catalog
              _casesOflags :: TypeCheckFlags
              _casesOimCast :: (Maybe TypeExtra)
              _elsOcat :: Catalog
              _elsOflags :: TypeCheckFlags
              _elsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _valIannotatedTree :: ScalarExpr
              _valIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _valIoriginalTree :: ScalarExpr
              _valIupType :: (Maybe TypeExtra)
              _casesIannotatedTree :: ScalarExprListStatementListTripleList
              _casesIoriginalTree :: ScalarExprListStatementListTripleList
              _elsIannotatedTree :: StatementList
              _elsIoriginalTree :: StatementList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 130, column 37)
              _annOtpe =
                  ({-# LINE 130 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 25360 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 131, column 37)
              _valOdownEnv =
                  ({-# LINE 131 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 25366 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 132, column 37)
              _valOexpectedCast =
                  ({-# LINE 132 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 25372 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 133, column 37)
              _valOexpectedType =
                  ({-# LINE 133 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 25378 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 134, column 37)
              _valOodbcFunction =
                  ({-# LINE 134 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 25384 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 826, column 37)
              _valOassignmentCastContext =
                  ({-# LINE 826 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 25390 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CaseStatementSimple _annIannotatedTree _valIannotatedTree _casesIannotatedTree _elsIannotatedTree
                   {-# LINE 25396 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CaseStatementSimple _annIoriginalTree _valIoriginalTree _casesIoriginalTree _elsIoriginalTree
                   {-# LINE 25402 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 25408 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 25414 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25420 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25426 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25432 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _valOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25438 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _valOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25444 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _valOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25450 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25456 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25462 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25468 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25474 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25480 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25486 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _valIannotatedTree,_valIcolExprs,_valIoriginalTree,_valIupType) =
                  val_ _valOassignmentCastContext _valOcat _valOdownEnv _valOexpectedCast _valOexpectedType _valOflags _valOimCast _valOodbcFunction
              ( _casesIannotatedTree,_casesIoriginalTree) =
                  cases_ _casesOcat _casesOflags _casesOimCast
              ( _elsIannotatedTree,_elsIoriginalTree) =
                  els_ _elsOcat _elsOflags _elsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CaseStatement :: T_Annotation ->
                               T_ScalarExprListStatementListTripleList ->
                               T_StatementList ->
                               T_Statement
_sem_Statement_CaseStatement ann_ cases_ els_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _casesOcat :: Catalog
              _casesOflags :: TypeCheckFlags
              _casesOimCast :: (Maybe TypeExtra)
              _elsOcat :: Catalog
              _elsOflags :: TypeCheckFlags
              _elsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _casesIannotatedTree :: ScalarExprListStatementListTripleList
              _casesIoriginalTree :: ScalarExprListStatementListTripleList
              _elsIannotatedTree :: StatementList
              _elsIoriginalTree :: StatementList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 129, column 31)
              _annOtpe =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 25527 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CaseStatement _annIannotatedTree _casesIannotatedTree _elsIannotatedTree
                   {-# LINE 25533 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CaseStatement _annIoriginalTree _casesIoriginalTree _elsIoriginalTree
                   {-# LINE 25539 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 25545 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 25551 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25557 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25563 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25569 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25575 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25581 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25587 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25593 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25599 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25605 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _casesIannotatedTree,_casesIoriginalTree) =
                  cases_ _casesOcat _casesOflags _casesOimCast
              ( _elsIannotatedTree,_elsIoriginalTree) =
                  els_ _elsOcat _elsOflags _elsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_If :: T_Annotation ->
                    T_ScalarExprStatementListPairList ->
                    T_StatementList ->
                    T_Statement
_sem_Statement_If ann_ cases_ els_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _casesOcat :: Catalog
              _casesOflags :: TypeCheckFlags
              _casesOimCast :: (Maybe TypeExtra)
              _elsOcat :: Catalog
              _elsOflags :: TypeCheckFlags
              _elsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _casesIannotatedTree :: ScalarExprStatementListPairList
              _casesIoriginalTree :: ScalarExprStatementListPairList
              _elsIannotatedTree :: StatementList
              _elsIoriginalTree :: StatementList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 13, column 5)
              _annOtpe =
                  ({-# LINE 13 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag" #-}
                   Left []
                   {-# LINE 25644 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   If _annIannotatedTree _casesIannotatedTree _elsIannotatedTree
                   {-# LINE 25650 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   If _annIoriginalTree _casesIoriginalTree _elsIoriginalTree
                   {-# LINE 25656 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 25662 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 25668 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25674 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25680 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25686 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25692 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25698 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _casesOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25704 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25710 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25716 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _elsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25722 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _casesIannotatedTree,_casesIoriginalTree) =
                  cases_ _casesOcat _casesOflags _casesOimCast
              ( _elsIannotatedTree,_elsIoriginalTree) =
                  els_ _elsOcat _elsOflags _elsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_Block :: T_Annotation ->
                       (Maybe String) ->
                       T_VarDefList ->
                       T_StatementList ->
                       T_Statement
_sem_Statement_Block ann_ lb_ vars_ sts_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _varsOcat :: Catalog
              _varsOflags :: TypeCheckFlags
              _varsOimCast :: (Maybe TypeExtra)
              _stsOcat :: Catalog
              _stsOflags :: TypeCheckFlags
              _stsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _varsIannotatedTree :: VarDefList
              _varsIoriginalTree :: VarDefList
              _stsIannotatedTree :: StatementList
              _stsIoriginalTree :: StatementList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 128, column 23)
              _annOtpe =
                  ({-# LINE 128 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 25762 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Block _annIannotatedTree lb_ _varsIannotatedTree _stsIannotatedTree
                   {-# LINE 25768 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Block _annIoriginalTree lb_ _varsIoriginalTree _stsIoriginalTree
                   {-# LINE 25774 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 25780 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 25786 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25792 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25798 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25804 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _varsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25810 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _varsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25816 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _varsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25822 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25828 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25834 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _stsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25840 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _varsIannotatedTree,_varsIoriginalTree) =
                  vars_ _varsOcat _varsOflags _varsOimCast
              ( _stsIannotatedTree,_stsIoriginalTree) =
                  sts_ _stsOcat _stsOflags _stsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_AntiStatement :: String ->
                               T_Statement
_sem_Statement_AntiStatement string_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AntiStatement string_
                   {-# LINE 25861 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   AntiStatement string_
                   {-# LINE 25867 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 25873 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 25879 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_DeclareStatement :: T_Annotation ->
                                  ([(String,TypeName,Maybe ScalarExpr)]) ->
                                  T_Statement
_sem_Statement_DeclareStatement ann_ ds_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 13, column 5)
              _annOtpe =
                  ({-# LINE 13 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag" #-}
                   Left []
                   {-# LINE 25901 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   DeclareStatement _annIannotatedTree ds_
                   {-# LINE 25907 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   DeclareStatement _annIoriginalTree ds_
                   {-# LINE 25913 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 25919 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 25925 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 25931 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 25937 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 25943 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_ExecStatement :: T_Annotation ->
                               T_Name ->
                               T_ScalarExprList ->
                               T_Statement
_sem_Statement_ExecStatement ann_ spName_ args_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _argsOdownEnv :: Environment
              _argsOexpectedCast :: Bool
              _argsOexpectedTypes :: ([TypeExtra])
              _spNameOtpe :: (Either [TypeError] TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _argsOassignmentCastContext :: Bool
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _spNameOcat :: Catalog
              _spNameOflags :: TypeCheckFlags
              _spNameOimCast :: (Maybe TypeExtra)
              _argsOcat :: Catalog
              _argsOflags :: TypeCheckFlags
              _argsOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _spNameIannotatedTree :: Name
              _spNameIoriginalTree :: Name
              _argsIannotatedTree :: ScalarExprList
              _argsIoriginalTree :: ScalarExprList
              _argsIupTypes :: ([Maybe TypeExtra])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 174, column 31)
              _argsOdownEnv =
                  ({-# LINE 174 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 25984 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 175, column 31)
              _argsOexpectedCast =
                  ({-# LINE 175 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 25990 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 176, column 31)
              _argsOexpectedTypes =
                  ({-# LINE 176 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   []
                   {-# LINE 25996 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 177, column 31)
              _spNameOtpe =
                  ({-# LINE 177 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 26002 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 13, column 5)
              _annOtpe =
                  ({-# LINE 13 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag" #-}
                   Left []
                   {-# LINE 26008 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 830, column 31)
              _argsOassignmentCastContext =
                  ({-# LINE 830 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 26014 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ExecStatement _annIannotatedTree _spNameIannotatedTree _argsIannotatedTree
                   {-# LINE 26020 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ExecStatement _annIoriginalTree _spNameIoriginalTree _argsIoriginalTree
                   {-# LINE 26026 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 26032 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 26038 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 26044 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 26050 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 26056 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _spNameOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 26062 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _spNameOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 26068 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _spNameOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 26074 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 26080 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 26086 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _argsOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 26092 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _spNameIannotatedTree,_spNameIoriginalTree) =
                  spName_ _spNameOcat _spNameOflags _spNameOimCast _spNameOtpe
              ( _argsIannotatedTree,_argsIoriginalTree,_argsIupTypes) =
                  args_ _argsOassignmentCastContext _argsOcat _argsOdownEnv _argsOexpectedCast _argsOexpectedTypes _argsOflags _argsOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_Statement_CreateIndexTSQL :: T_Annotation ->
                                 NameComponent ->
                                 T_Name ->
                                 ([NameComponent]) ->
                                 T_Statement
_sem_Statement_CreateIndexTSQL ann_ nm_ obj_ cols_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _objOtpe :: (Either [TypeError] TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: Statement
              _lhsOoriginalTree :: Statement
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _objOcat :: Catalog
              _objOflags :: TypeCheckFlags
              _objOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _objIannotatedTree :: Name
              _objIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 145, column 33)
              _objOtpe =
                  ({-# LINE 145 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 26128 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag"(line 13, column 5)
              _annOtpe =
                  ({-# LINE 13 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Statements.ag" #-}
                   Left []
                   {-# LINE 26134 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateIndexTSQL _annIannotatedTree nm_ _objIannotatedTree cols_
                   {-# LINE 26140 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   CreateIndexTSQL _annIoriginalTree nm_ _objIoriginalTree cols_
                   {-# LINE 26146 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 26152 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 26158 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 26164 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 26170 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 26176 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _objOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 26182 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _objOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 26188 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _objOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 26194 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _objIannotatedTree,_objIoriginalTree) =
                  obj_ _objOcat _objOflags _objOimCast _objOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- StatementList -----------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : StatementList 
         originalTree         : StatementList 
   alternatives:
      alternative Cons:
         child hd             : Statement 
         child tl             : StatementList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type StatementList = [Statement]
-- cata
_sem_StatementList :: StatementList ->
                     T_StatementList
_sem_StatementList list =
    (Prelude.foldr _sem_StatementList_Cons _sem_StatementList_Nil (Prelude.map _sem_Statement list))
-- semantic domain
type T_StatementList = Catalog ->
                       TypeCheckFlags ->
                       (Maybe TypeExtra) ->
                       ( StatementList,StatementList)
data Inh_StatementList = Inh_StatementList {_cat_Inh_StatementList :: Catalog,_flags_Inh_StatementList :: TypeCheckFlags,_imCast_Inh_StatementList :: (Maybe TypeExtra)}
data Syn_StatementList = Syn_StatementList {_annotatedTree_Syn_StatementList :: StatementList,_originalTree_Syn_StatementList :: StatementList}
_wrap_StatementList :: T_StatementList ->
                      Inh_StatementList ->
                      Syn_StatementList
_wrap_StatementList sem (Inh_StatementList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_StatementList _lhsOannotatedTree _lhsOoriginalTree))
_sem_StatementList_Cons :: T_Statement ->
                          T_StatementList ->
                          T_StatementList
_sem_StatementList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: StatementList
              _lhsOoriginalTree :: StatementList
              _hdOcat :: Catalog
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: Statement
              _hdIoriginalTree :: Statement
              _tlIannotatedTree :: StatementList
              _tlIoriginalTree :: StatementList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 26265 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 26271 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 26277 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 26283 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 26289 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 26295 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 26301 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 26307 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 26313 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 26319 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree) =
                  hd_ _hdOcat _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_StatementList_Nil :: T_StatementList
_sem_StatementList_Nil =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: StatementList
              _lhsOoriginalTree :: StatementList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 26337 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 26343 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 26349 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 26355 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- TablePartitionDef -------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : TablePartitionDef 
         originalTree         : TablePartitionDef 
   alternatives:
      alternative TablePartitionDef:
         child ann            : Annotation 
         child colname        : {NameComponent}
         child interval       : {Integer}
         child timeframe      : {TablePartitionDateTimeInterval}
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data TablePartitionDef = TablePartitionDef (Annotation) (NameComponent) (Integer) (TablePartitionDateTimeInterval)
                       deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_TablePartitionDef :: TablePartitionDef ->
                         T_TablePartitionDef
_sem_TablePartitionDef (TablePartitionDef _ann _colname _interval _timeframe) =
    (_sem_TablePartitionDef_TablePartitionDef (_sem_Annotation _ann) _colname _interval _timeframe)
-- semantic domain
type T_TablePartitionDef = Catalog ->
                           TypeCheckFlags ->
                           (Maybe TypeExtra) ->
                           ( TablePartitionDef,TablePartitionDef)
data Inh_TablePartitionDef = Inh_TablePartitionDef {_cat_Inh_TablePartitionDef :: Catalog,_flags_Inh_TablePartitionDef :: TypeCheckFlags,_imCast_Inh_TablePartitionDef :: (Maybe TypeExtra)}
data Syn_TablePartitionDef = Syn_TablePartitionDef {_annotatedTree_Syn_TablePartitionDef :: TablePartitionDef,_originalTree_Syn_TablePartitionDef :: TablePartitionDef}
_wrap_TablePartitionDef :: T_TablePartitionDef ->
                          Inh_TablePartitionDef ->
                          Syn_TablePartitionDef
_wrap_TablePartitionDef sem (Inh_TablePartitionDef _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_TablePartitionDef _lhsOannotatedTree _lhsOoriginalTree))
_sem_TablePartitionDef_TablePartitionDef :: T_Annotation ->
                                           NameComponent ->
                                           Integer ->
                                           TablePartitionDateTimeInterval ->
                                           T_TablePartitionDef
_sem_TablePartitionDef_TablePartitionDef ann_ colname_ interval_ timeframe_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: TablePartitionDef
              _lhsOoriginalTree :: TablePartitionDef
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 226, column 43)
              _annOtpe =
                  ({-# LINE 226 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 26419 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   TablePartitionDef _annIannotatedTree colname_ interval_ timeframe_
                   {-# LINE 26425 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   TablePartitionDef _annIoriginalTree colname_ interval_ timeframe_
                   {-# LINE 26431 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 26437 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 26443 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 26449 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 26455 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 26461 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- TableRef ----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : TableRef 
         originalTree         : TableRef 
         upEnv                : Environment
   alternatives:
      alternative Tref:
         child ann            : Annotation 
         child tbl            : Name 
         visit 0:
            local eEnv        : {Either [TypeError] Environment}
            local newAlias    : _
            local annotatedTree : _
            local originalTree : _
      alternative FunTref:
         child ann            : Annotation 
         child fn             : ScalarExpr 
         visit 0:
            local eEnv        : {Either [TypeError] Environment}
            local newAlias    : _
            local annotatedTree : _
            local originalTree : _
      alternative SubTref:
         child ann            : Annotation 
         child sel            : QueryExpr 
         visit 0:
            local eEnv        : {Either [TypeError] Environment}
            local newAlias    : _
            local annotatedTree : _
            local originalTree : _
      alternative JoinTref:
         child ann            : Annotation 
         child tref0          : TableRef 
         child nat            : {Natural}
         child joinType       : {JoinType}
         child joinHint       : {Maybe JoinHint}
         child tref1          : TableRef 
         child onExpr         : OnExpr 
         visit 0:
            local eEnv        : {Either [TypeError] Environment}
            local newAlias    : _
            local annotatedTree : _
            local originalTree : _
      alternative TableAlias:
         child ann            : Annotation 
         child tb             : {NameComponent}
         child tref           : TableRef 
         visit 0:
            local eEnv        : {Either [TypeError] Environment}
            local annotatedTree : _
            local originalTree : _
      alternative FullAlias:
         child ann            : Annotation 
         child tb             : {NameComponent}
         child cols           : {[NameComponent]}
         child tref           : TableRef 
         visit 0:
            local eEnv        : {Either [TypeError] Environment}
            local annotatedTree : _
            local originalTree : _
      alternative TableRefParens:
         child ann            : Annotation 
         child tref           : TableRef 
         visit 0:
            local eEnv        : {Either [TypeError] Environment}
            local newAlias    : _
            local annotatedTree : _
            local originalTree : _
      alternative OdbcTableRef:
         child ann            : Annotation 
         child tref           : TableRef 
         visit 0:
            local eEnv        : {Either [TypeError] Environment}
            local newAlias    : _
            local annotatedTree : _
            local originalTree : _
-}
data TableRef = Tref (Annotation) (Name)
              | FunTref (Annotation) (ScalarExpr)
              | SubTref (Annotation) (QueryExpr)
              | JoinTref (Annotation) (TableRef) (Natural) (JoinType) ((Maybe JoinHint)) (TableRef) (OnExpr)
              | TableAlias (Annotation) (NameComponent) (TableRef)
              | FullAlias (Annotation) (NameComponent) (([NameComponent])) (TableRef)
              | TableRefParens (Annotation) (TableRef)
              | OdbcTableRef (Annotation) (TableRef)
              deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_TableRef :: TableRef ->
                T_TableRef
_sem_TableRef (Tref _ann _tbl) =
    (_sem_TableRef_Tref (_sem_Annotation _ann) (_sem_Name _tbl))
_sem_TableRef (FunTref _ann _fn) =
    (_sem_TableRef_FunTref (_sem_Annotation _ann) (_sem_ScalarExpr _fn))
_sem_TableRef (SubTref _ann _sel) =
    (_sem_TableRef_SubTref (_sem_Annotation _ann) (_sem_QueryExpr _sel))
_sem_TableRef (JoinTref _ann _tref0 _nat _joinType _joinHint _tref1 _onExpr) =
    (_sem_TableRef_JoinTref (_sem_Annotation _ann) (_sem_TableRef _tref0) _nat _joinType _joinHint (_sem_TableRef _tref1) (_sem_OnExpr _onExpr))
_sem_TableRef (TableAlias _ann _tb _tref) =
    (_sem_TableRef_TableAlias (_sem_Annotation _ann) _tb (_sem_TableRef _tref))
_sem_TableRef (FullAlias _ann _tb _cols _tref) =
    (_sem_TableRef_FullAlias (_sem_Annotation _ann) _tb _cols (_sem_TableRef _tref))
_sem_TableRef (TableRefParens _ann _tref) =
    (_sem_TableRef_TableRefParens (_sem_Annotation _ann) (_sem_TableRef _tref))
_sem_TableRef (OdbcTableRef _ann _tref) =
    (_sem_TableRef_OdbcTableRef (_sem_Annotation _ann) (_sem_TableRef _tref))
-- semantic domain
type T_TableRef = Catalog ->
                  TypeCheckFlags ->
                  (Maybe TypeExtra) ->
                  ( TableRef,TableRef,Environment)
data Inh_TableRef = Inh_TableRef {_cat_Inh_TableRef :: Catalog,_flags_Inh_TableRef :: TypeCheckFlags,_imCast_Inh_TableRef :: (Maybe TypeExtra)}
data Syn_TableRef = Syn_TableRef {_annotatedTree_Syn_TableRef :: TableRef,_originalTree_Syn_TableRef :: TableRef,_upEnv_Syn_TableRef :: Environment}
_wrap_TableRef :: T_TableRef ->
                 Inh_TableRef ->
                 Syn_TableRef
_wrap_TableRef sem (Inh_TableRef _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupEnv) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_TableRef _lhsOannotatedTree _lhsOoriginalTree _lhsOupEnv))
_sem_TableRef_Tref :: T_Annotation ->
                     T_Name ->
                     T_TableRef
_sem_TableRef_Tref ann_ tbl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupEnv :: Environment
              _eEnv :: (Either [TypeError] Environment)
              _tblOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: TableRef
              _lhsOoriginalTree :: TableRef
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _tblOcat :: Catalog
              _tblOflags :: TypeCheckFlags
              _tblOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _tblIannotatedTree :: Name
              _tblIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 33, column 7)
              _annOtpe =
                  ({-# LINE 33 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either Left (Right . mkTypeExtraNN . TrefType)
                   (_eEnv     >>= E.envExpandStar Nothing)
                   {-# LINE 26618 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 36, column 7)
              _lhsOupEnv =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either (const E.brokeEnvironment) id _eEnv
                   {-# LINE 26624 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 42, column 7)
              _eEnv =
                  ({-# LINE 42 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   E.envCreateTrefEnvironment _lhsIcat (nameComponents _tblIoriginalTree)
                   {-# LINE 26630 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 43, column 7)
              _tblOtpe =
                  ({-# LINE 43 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   Left []
                   {-# LINE 26636 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 75, column 7)
              _lhsOannotatedTree =
                  ({-# LINE 75 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   let mk (q,is) = FullAlias emptyAnnotation
                                            (Nmc q)
                                            (map Nmc is)
                                            $ wrapIfJoin _annotatedTree
                       wrapIfJoin tr = case tr of
                                          JoinTref {} -> TableRefParens emptyAnnotation tr
                                          _ -> tr
                   in maybe _annotatedTree     mk _newAlias
                   {-# LINE 26649 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 150, column 7)
              _newAlias =
                  ({-# LINE 150 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   if tcfAddFullTablerefAliases _lhsIflags
                   then do
                     ((_,n),cs,_) <- either (const Nothing) Just
                                   $ catLookupTableAndAttrs _lhsIcat
                                   (nameComponents _tblIoriginalTree)
                     return (T.unpack n, (map (T.unpack . fst) cs))
                   else Nothing
                   {-# LINE 26661 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Tref _annIannotatedTree _tblIannotatedTree
                   {-# LINE 26667 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Tref _annIoriginalTree _tblIoriginalTree
                   {-# LINE 26673 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 26679 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 26685 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 26691 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 26697 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tblOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 26703 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tblOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 26709 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tblOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 26715 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _tblIannotatedTree,_tblIoriginalTree) =
                  tbl_ _tblOcat _tblOflags _tblOimCast _tblOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupEnv)))
_sem_TableRef_FunTref :: T_Annotation ->
                        T_ScalarExpr ->
                        T_TableRef
_sem_TableRef_FunTref ann_ fn_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _fnOdownEnv :: Environment
              _fnOexpectedCast :: Bool
              _fnOexpectedType :: (Maybe TypeExtra)
              _fnOodbcFunction :: Bool
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupEnv :: Environment
              _eEnv :: (Either [TypeError] Environment)
              _lhsOannotatedTree :: TableRef
              _fnOassignmentCastContext :: Bool
              _lhsOoriginalTree :: TableRef
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _fnOcat :: Catalog
              _fnOflags :: TypeCheckFlags
              _fnOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _fnIannotatedTree :: ScalarExpr
              _fnIcolExprs :: ([(NameComponent,Maybe TypeExtra,ScalarExpr)])
              _fnIoriginalTree :: ScalarExpr
              _fnIupType :: (Maybe TypeExtra)
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 227, column 24)
              _fnOdownEnv =
                  ({-# LINE 227 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 26755 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 228, column 24)
              _fnOexpectedCast =
                  ({-# LINE 228 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 26761 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 229, column 24)
              _fnOexpectedType =
                  ({-# LINE 229 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Nothing
                   {-# LINE 26767 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 230, column 24)
              _fnOodbcFunction =
                  ({-# LINE 230 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   False
                   {-# LINE 26773 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 33, column 7)
              _annOtpe =
                  ({-# LINE 33 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either Left (Right . mkTypeExtraNN . TrefType)
                   (_eEnv     >>= E.envExpandStar Nothing)
                   {-# LINE 26780 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 36, column 7)
              _lhsOupEnv =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either (const E.brokeEnvironment) id _eEnv
                   {-# LINE 26786 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 71, column 7)
              _eEnv =
                  ({-# LINE 71 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   Left []
                   {-# LINE 26792 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 75, column 7)
              _lhsOannotatedTree =
                  ({-# LINE 75 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   let mk (q,is) = FullAlias emptyAnnotation
                                            (Nmc q)
                                            (map Nmc is)
                                            $ wrapIfJoin _annotatedTree
                       wrapIfJoin tr = case tr of
                                          JoinTref {} -> TableRefParens emptyAnnotation tr
                                          _ -> tr
                   in maybe _annotatedTree     mk _newAlias
                   {-# LINE 26805 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 135, column 7)
              _newAlias =
                  ({-# LINE 135 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   if tcfAddFullTablerefAliases _lhsIflags
                   then do
                     env <- either (const Nothing) Just _eEnv
                     cs <- either (const Nothing) Just $ E.envExpandStar Nothing env
                     let qs = map (fst . fst) cs
                     if all (== head qs) qs
                       then return (T.unpack $ head qs, map (T.unpack . snd . fst) cs)
                       else
                                                            Nothing
                   else Nothing
                   {-# LINE 26820 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 843, column 24)
              _fnOassignmentCastContext =
                  ({-# LINE 843 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 26826 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   FunTref _annIannotatedTree _fnIannotatedTree
                   {-# LINE 26832 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   FunTref _annIoriginalTree _fnIoriginalTree
                   {-# LINE 26838 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 26844 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 26850 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 26856 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 26862 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 26868 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 26874 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _fnOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 26880 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _fnIannotatedTree,_fnIcolExprs,_fnIoriginalTree,_fnIupType) =
                  fn_ _fnOassignmentCastContext _fnOcat _fnOdownEnv _fnOexpectedCast _fnOexpectedType _fnOflags _fnOimCast _fnOodbcFunction
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupEnv)))
_sem_TableRef_SubTref :: T_Annotation ->
                        T_QueryExpr ->
                        T_TableRef
_sem_TableRef_SubTref ann_ sel_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupEnv :: Environment
              _eEnv :: (Either [TypeError] Environment)
              _selOexpectedType :: (Maybe [TypeExtra])
              _lhsOannotatedTree :: TableRef
              _selOouterDownEnv :: (Maybe Environment)
              _selOassignmentCastContext :: Bool
              _lhsOoriginalTree :: TableRef
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _selOcat :: Catalog
              _selOflags :: TypeCheckFlags
              _selOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _selIannotatedTree :: QueryExpr
              _selIoriginalTree :: QueryExpr
              _selIupType :: (Maybe [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 33, column 7)
              _annOtpe =
                  ({-# LINE 33 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either Left (Right . mkTypeExtraNN . TrefType)
                   (_eEnv     >>= E.envExpandStar Nothing)
                   {-# LINE 26918 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 36, column 7)
              _lhsOupEnv =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either (const E.brokeEnvironment) id _eEnv
                   {-# LINE 26924 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 58, column 7)
              _eEnv =
                  ({-# LINE 58 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   maybe (Left []) id
                   $ fmap E.envSelectListEnvironment _selIupType
                   {-# LINE 26931 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 60, column 7)
              _selOexpectedType =
                  ({-# LINE 60 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   liftM (map snd) _selIupType
                   {-# LINE 26937 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 75, column 7)
              _lhsOannotatedTree =
                  ({-# LINE 75 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   let mk (q,is) = FullAlias emptyAnnotation
                                            (Nmc q)
                                            (map Nmc is)
                                            $ wrapIfJoin _annotatedTree
                       wrapIfJoin tr = case tr of
                                          JoinTref {} -> TableRefParens emptyAnnotation tr
                                          _ -> tr
                   in maybe _annotatedTree     mk _newAlias
                   {-# LINE 26950 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 135, column 7)
              _newAlias =
                  ({-# LINE 135 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   if tcfAddFullTablerefAliases _lhsIflags
                   then do
                     env <- either (const Nothing) Just _eEnv
                     cs <- either (const Nothing) Just $ E.envExpandStar Nothing env
                     let qs = map (fst . fst) cs
                     if all (== head qs) qs
                       then return (T.unpack $ head qs, map (T.unpack . snd . fst) cs)
                       else
                                                            Nothing
                   else Nothing
                   {-# LINE 26965 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 93, column 13)
              _selOouterDownEnv =
                  ({-# LINE 93 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   Nothing
                   {-# LINE 26971 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 844, column 24)
              _selOassignmentCastContext =
                  ({-# LINE 844 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 26977 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SubTref _annIannotatedTree _selIannotatedTree
                   {-# LINE 26983 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SubTref _annIoriginalTree _selIoriginalTree
                   {-# LINE 26989 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 26995 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27001 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27007 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 27013 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27019 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27025 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _selOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 27031 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _selIannotatedTree,_selIoriginalTree,_selIupType) =
                  sel_ _selOassignmentCastContext _selOcat _selOexpectedType _selOflags _selOimCast _selOouterDownEnv
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupEnv)))
_sem_TableRef_JoinTref :: T_Annotation ->
                         T_TableRef ->
                         Natural ->
                         JoinType ->
                         (Maybe JoinHint) ->
                         T_TableRef ->
                         T_OnExpr ->
                         T_TableRef
_sem_TableRef_JoinTref ann_ tref0_ nat_ joinType_ joinHint_ tref1_ onExpr_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupEnv :: Environment
              _eEnv :: (Either [TypeError] Environment)
              _onExprOdownEnv :: Environment
              _lhsOannotatedTree :: TableRef
              _lhsOoriginalTree :: TableRef
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _tref0Ocat :: Catalog
              _tref0Oflags :: TypeCheckFlags
              _tref0OimCast :: (Maybe TypeExtra)
              _tref1Ocat :: Catalog
              _tref1Oflags :: TypeCheckFlags
              _tref1OimCast :: (Maybe TypeExtra)
              _onExprOcat :: Catalog
              _onExprOflags :: TypeCheckFlags
              _onExprOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _tref0IannotatedTree :: TableRef
              _tref0IoriginalTree :: TableRef
              _tref0IupEnv :: Environment
              _tref1IannotatedTree :: TableRef
              _tref1IoriginalTree :: TableRef
              _tref1IupEnv :: Environment
              _onExprIannotatedTree :: OnExpr
              _onExprIoriginalTree :: OnExpr
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 33, column 7)
              _annOtpe =
                  ({-# LINE 33 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either Left (Right . mkTypeExtraNN . TrefType)
                   (_eEnv     >>= E.envExpandStar Nothing)
                   {-# LINE 27083 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 36, column 7)
              _lhsOupEnv =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either (const E.brokeEnvironment) id _eEnv
                   {-# LINE 27089 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 46, column 7)
              _eEnv =
                  ({-# LINE 46 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   E.createJoinTrefEnvironment _lhsIcat
                     _tref0IupEnv _tref1IupEnv (convertJoinType joinType_)
                     $ case (joinType_,_onExprIoriginalTree) of
                        (x,Nothing) | x /= Cross -> Nothing
                        (_,Just (JoinUsing _ nms)) -> Just nms
                        _ -> Just []
                   {-# LINE 27100 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 56, column 7)
              _onExprOdownEnv =
                  ({-# LINE 56 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either (const E.brokeEnvironment) id _eEnv
                   {-# LINE 27106 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 75, column 7)
              _lhsOannotatedTree =
                  ({-# LINE 75 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   let mk (q,is) = FullAlias emptyAnnotation
                                            (Nmc q)
                                            (map Nmc is)
                                            $ wrapIfJoin _annotatedTree
                       wrapIfJoin tr = case tr of
                                          JoinTref {} -> TableRefParens emptyAnnotation tr
                                          _ -> tr
                   in maybe _annotatedTree     mk _newAlias
                   {-# LINE 27119 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 135, column 7)
              _newAlias =
                  ({-# LINE 135 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   if tcfAddFullTablerefAliases _lhsIflags
                   then do
                     env <- either (const Nothing) Just _eEnv
                     cs <- either (const Nothing) Just $ E.envExpandStar Nothing env
                     let qs = map (fst . fst) cs
                     if all (== head qs) qs
                       then return (T.unpack $ head qs, map (T.unpack . snd . fst) cs)
                       else
                                                            Nothing
                   else Nothing
                   {-# LINE 27134 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   JoinTref _annIannotatedTree _tref0IannotatedTree nat_ joinType_ joinHint_ _tref1IannotatedTree _onExprIannotatedTree
                   {-# LINE 27140 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   JoinTref _annIoriginalTree _tref0IoriginalTree nat_ joinType_ joinHint_ _tref1IoriginalTree _onExprIoriginalTree
                   {-# LINE 27146 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 27152 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27158 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27164 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 27170 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tref0Ocat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27176 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tref0Oflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27182 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tref0OimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 27188 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tref1Ocat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27194 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tref1Oflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27200 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tref1OimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 27206 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _onExprOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27212 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _onExprOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27218 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _onExprOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 27224 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _tref0IannotatedTree,_tref0IoriginalTree,_tref0IupEnv) =
                  tref0_ _tref0Ocat _tref0Oflags _tref0OimCast
              ( _tref1IannotatedTree,_tref1IoriginalTree,_tref1IupEnv) =
                  tref1_ _tref1Ocat _tref1Oflags _tref1OimCast
              ( _onExprIannotatedTree,_onExprIoriginalTree) =
                  onExpr_ _onExprOcat _onExprOdownEnv _onExprOflags _onExprOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupEnv)))
_sem_TableRef_TableAlias :: T_Annotation ->
                           NameComponent ->
                           T_TableRef ->
                           T_TableRef
_sem_TableRef_TableAlias ann_ tb_ tref_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupEnv :: Environment
              _eEnv :: (Either [TypeError] Environment)
              _lhsOannotatedTree :: TableRef
              _lhsOoriginalTree :: TableRef
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _trefOcat :: Catalog
              _trefOflags :: TypeCheckFlags
              _trefOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _trefIannotatedTree :: TableRef
              _trefIoriginalTree :: TableRef
              _trefIupEnv :: Environment
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 33, column 7)
              _annOtpe =
                  ({-# LINE 33 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either Left (Right . mkTypeExtraNN . TrefType)
                   (_eEnv     >>= E.envExpandStar Nothing)
                   {-# LINE 27264 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 36, column 7)
              _lhsOupEnv =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either (const E.brokeEnvironment) id _eEnv
                   {-# LINE 27270 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 68, column 7)
              _eEnv =
                  ({-# LINE 68 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   Right $ E.createTrefAliasedEnvironment
                           (ncStrT tb_) Nothing _trefIupEnv
                   {-# LINE 27277 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 124, column 7)
              _lhsOannotatedTree =
                  ({-# LINE 124 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   case _trefIannotatedTree of
                     FullAlias _ _ c tr -> FullAlias emptyAnnotation tb_ c tr
                     TableAlias _ _ tr -> TableAlias emptyAnnotation tb_ tr
                     _ -> _annotatedTree
                   {-# LINE 27286 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   TableAlias _annIannotatedTree tb_ _trefIannotatedTree
                   {-# LINE 27292 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   TableAlias _annIoriginalTree tb_ _trefIoriginalTree
                   {-# LINE 27298 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 27304 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27310 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27316 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 27322 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _trefOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27328 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _trefOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27334 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _trefOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 27340 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _trefIannotatedTree,_trefIoriginalTree,_trefIupEnv) =
                  tref_ _trefOcat _trefOflags _trefOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupEnv)))
_sem_TableRef_FullAlias :: T_Annotation ->
                          NameComponent ->
                          ([NameComponent]) ->
                          T_TableRef ->
                          T_TableRef
_sem_TableRef_FullAlias ann_ tb_ cols_ tref_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupEnv :: Environment
              _eEnv :: (Either [TypeError] Environment)
              _lhsOannotatedTree :: TableRef
              _lhsOoriginalTree :: TableRef
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _trefOcat :: Catalog
              _trefOflags :: TypeCheckFlags
              _trefOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _trefIannotatedTree :: TableRef
              _trefIoriginalTree :: TableRef
              _trefIupEnv :: Environment
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 33, column 7)
              _annOtpe =
                  ({-# LINE 33 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either Left (Right . mkTypeExtraNN . TrefType)
                   (_eEnv     >>= E.envExpandStar Nothing)
                   {-# LINE 27377 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 36, column 7)
              _lhsOupEnv =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either (const E.brokeEnvironment) id _eEnv
                   {-# LINE 27383 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 65, column 7)
              _eEnv =
                  ({-# LINE 65 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   Right $ E.createTrefAliasedEnvironment
                           (ncStrT tb_) (Just $ map ncStrT cols_) _trefIupEnv
                   {-# LINE 27390 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 103, column 7)
              _lhsOannotatedTree =
                  ({-# LINE 103 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   case _trefIannotatedTree of
                     FullAlias _ t _ tr -> FullAlias emptyAnnotation
                                             (if tb_ == Nmc "" then t else tb_) cols_                       tr
                     TableAlias _ _ tr -> FullAlias emptyAnnotation tb_ cols_                        tr
                     _ -> _annotatedTree
                   {-# LINE 27400 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   FullAlias _annIannotatedTree tb_ cols_ _trefIannotatedTree
                   {-# LINE 27406 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   FullAlias _annIoriginalTree tb_ cols_ _trefIoriginalTree
                   {-# LINE 27412 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 27418 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27424 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27430 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 27436 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _trefOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27442 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _trefOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27448 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _trefOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 27454 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _trefIannotatedTree,_trefIoriginalTree,_trefIupEnv) =
                  tref_ _trefOcat _trefOflags _trefOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupEnv)))
_sem_TableRef_TableRefParens :: T_Annotation ->
                               T_TableRef ->
                               T_TableRef
_sem_TableRef_TableRefParens ann_ tref_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupEnv :: Environment
              _eEnv :: (Either [TypeError] Environment)
              _lhsOannotatedTree :: TableRef
              _lhsOoriginalTree :: TableRef
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _trefOcat :: Catalog
              _trefOflags :: TypeCheckFlags
              _trefOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _trefIannotatedTree :: TableRef
              _trefIoriginalTree :: TableRef
              _trefIupEnv :: Environment
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 33, column 7)
              _annOtpe =
                  ({-# LINE 33 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either Left (Right . mkTypeExtraNN . TrefType)
                   (_eEnv     >>= E.envExpandStar Nothing)
                   {-# LINE 27489 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 36, column 7)
              _lhsOupEnv =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either (const E.brokeEnvironment) id _eEnv
                   {-# LINE 27495 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 63, column 7)
              _eEnv =
                  ({-# LINE 63 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   Right $ _trefIupEnv
                   {-# LINE 27501 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 75, column 7)
              _lhsOannotatedTree =
                  ({-# LINE 75 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   let mk (q,is) = FullAlias emptyAnnotation
                                            (Nmc q)
                                            (map Nmc is)
                                            $ wrapIfJoin _annotatedTree
                       wrapIfJoin tr = case tr of
                                          JoinTref {} -> TableRefParens emptyAnnotation tr
                                          _ -> tr
                   in maybe _annotatedTree     mk _newAlias
                   {-# LINE 27514 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 135, column 7)
              _newAlias =
                  ({-# LINE 135 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   if tcfAddFullTablerefAliases _lhsIflags
                   then do
                     env <- either (const Nothing) Just _eEnv
                     cs <- either (const Nothing) Just $ E.envExpandStar Nothing env
                     let qs = map (fst . fst) cs
                     if all (== head qs) qs
                       then return (T.unpack $ head qs, map (T.unpack . snd . fst) cs)
                       else
                                                            Nothing
                   else Nothing
                   {-# LINE 27529 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   TableRefParens _annIannotatedTree _trefIannotatedTree
                   {-# LINE 27535 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   TableRefParens _annIoriginalTree _trefIoriginalTree
                   {-# LINE 27541 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 27547 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27553 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27559 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 27565 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _trefOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27571 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _trefOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27577 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _trefOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 27583 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _trefIannotatedTree,_trefIoriginalTree,_trefIupEnv) =
                  tref_ _trefOcat _trefOflags _trefOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupEnv)))
_sem_TableRef_OdbcTableRef :: T_Annotation ->
                             T_TableRef ->
                             T_TableRef
_sem_TableRef_OdbcTableRef ann_ tref_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOupEnv :: Environment
              _eEnv :: (Either [TypeError] Environment)
              _lhsOannotatedTree :: TableRef
              _lhsOoriginalTree :: TableRef
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _trefOcat :: Catalog
              _trefOflags :: TypeCheckFlags
              _trefOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _trefIannotatedTree :: TableRef
              _trefIoriginalTree :: TableRef
              _trefIupEnv :: Environment
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 33, column 7)
              _annOtpe =
                  ({-# LINE 33 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either Left (Right . mkTypeExtraNN . TrefType)
                   (_eEnv     >>= E.envExpandStar Nothing)
                   {-# LINE 27618 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 36, column 7)
              _lhsOupEnv =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   either (const E.brokeEnvironment) id _eEnv
                   {-# LINE 27624 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 63, column 7)
              _eEnv =
                  ({-# LINE 63 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   Right $ _trefIupEnv
                   {-# LINE 27630 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 75, column 7)
              _lhsOannotatedTree =
                  ({-# LINE 75 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   let mk (q,is) = FullAlias emptyAnnotation
                                            (Nmc q)
                                            (map Nmc is)
                                            $ wrapIfJoin _annotatedTree
                       wrapIfJoin tr = case tr of
                                          JoinTref {} -> TableRefParens emptyAnnotation tr
                                          _ -> tr
                   in maybe _annotatedTree     mk _newAlias
                   {-# LINE 27643 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 135, column 7)
              _newAlias =
                  ({-# LINE 135 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   if tcfAddFullTablerefAliases _lhsIflags
                   then do
                     env <- either (const Nothing) Just _eEnv
                     cs <- either (const Nothing) Just $ E.envExpandStar Nothing env
                     let qs = map (fst . fst) cs
                     if all (== head qs) qs
                       then return (T.unpack $ head qs, map (T.unpack . snd . fst) cs)
                       else
                                                            Nothing
                   else Nothing
                   {-# LINE 27658 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   OdbcTableRef _annIannotatedTree _trefIannotatedTree
                   {-# LINE 27664 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   OdbcTableRef _annIoriginalTree _trefIoriginalTree
                   {-# LINE 27670 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 27676 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27682 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27688 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 27694 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _trefOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27700 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _trefOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27706 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _trefOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 27712 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _trefIannotatedTree,_trefIoriginalTree,_trefIupEnv) =
                  tref_ _trefOcat _trefOflags _trefOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupEnv)))
-- TableRefList ------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : TableRefList 
         originalTree         : TableRefList 
         upEnv                : Environment
   alternatives:
      alternative Cons:
         child hd             : TableRef 
         child tl             : TableRefList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type TableRefList = [TableRef]
-- cata
_sem_TableRefList :: TableRefList ->
                    T_TableRefList
_sem_TableRefList list =
    (Prelude.foldr _sem_TableRefList_Cons _sem_TableRefList_Nil (Prelude.map _sem_TableRef list))
-- semantic domain
type T_TableRefList = Catalog ->
                      TypeCheckFlags ->
                      (Maybe TypeExtra) ->
                      ( TableRefList,TableRefList,Environment)
data Inh_TableRefList = Inh_TableRefList {_cat_Inh_TableRefList :: Catalog,_flags_Inh_TableRefList :: TypeCheckFlags,_imCast_Inh_TableRefList :: (Maybe TypeExtra)}
data Syn_TableRefList = Syn_TableRefList {_annotatedTree_Syn_TableRefList :: TableRefList,_originalTree_Syn_TableRefList :: TableRefList,_upEnv_Syn_TableRefList :: Environment}
_wrap_TableRefList :: T_TableRefList ->
                     Inh_TableRefList ->
                     Syn_TableRefList
_wrap_TableRefList sem (Inh_TableRefList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupEnv) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_TableRefList _lhsOannotatedTree _lhsOoriginalTree _lhsOupEnv))
_sem_TableRefList_Cons :: T_TableRef ->
                         T_TableRefList ->
                         T_TableRefList
_sem_TableRefList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOupEnv :: Environment
              _lhsOannotatedTree :: TableRefList
              _lhsOoriginalTree :: TableRefList
              _hdOcat :: Catalog
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: TableRef
              _hdIoriginalTree :: TableRef
              _hdIupEnv :: Environment
              _tlIannotatedTree :: TableRefList
              _tlIoriginalTree :: TableRefList
              _tlIupEnv :: Environment
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 20, column 7)
              _lhsOupEnv =
                  ({-# LINE 20 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   if E.isEmptyEnv _tlIupEnv
                   then _hdIupEnv
                   else
                          either (error . show) id $
                          E.createJoinTrefEnvironment _lhsIcat _hdIupEnv _tlIupEnv E.Inner $ Just []
                   {-# LINE 27791 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 27797 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 27803 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 27809 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 27815 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27821 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27827 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 27833 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27839 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27845 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 27851 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree,_hdIupEnv) =
                  hd_ _hdOcat _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree,_tlIupEnv) =
                  tl_ _tlOcat _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupEnv)))
_sem_TableRefList_Nil :: T_TableRefList
_sem_TableRefList_Nil =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOupEnv :: Environment
              _lhsOannotatedTree :: TableRefList
              _lhsOoriginalTree :: TableRefList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag"(line 18, column 9)
              _lhsOupEnv =
                  ({-# LINE 18 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/TableRefs.ag" #-}
                   E.emptyEnvironment
                   {-# LINE 27870 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 27876 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 27882 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 27888 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 27894 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree,_lhsOupEnv)))
-- TypeAttributeDef --------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : TypeAttributeDef 
         originalTree         : TypeAttributeDef 
   alternatives:
      alternative TypeAttDef:
         child ann            : Annotation 
         child name           : {NameComponent}
         child typ            : TypeName 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data TypeAttributeDef = TypeAttDef (Annotation) (NameComponent) (TypeName)
                      deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_TypeAttributeDef :: TypeAttributeDef ->
                        T_TypeAttributeDef
_sem_TypeAttributeDef (TypeAttDef _ann _name _typ) =
    (_sem_TypeAttributeDef_TypeAttDef (_sem_Annotation _ann) _name (_sem_TypeName _typ))
-- semantic domain
type T_TypeAttributeDef = Catalog ->
                          TypeCheckFlags ->
                          (Maybe TypeExtra) ->
                          ( TypeAttributeDef,TypeAttributeDef)
data Inh_TypeAttributeDef = Inh_TypeAttributeDef {_cat_Inh_TypeAttributeDef :: Catalog,_flags_Inh_TypeAttributeDef :: TypeCheckFlags,_imCast_Inh_TypeAttributeDef :: (Maybe TypeExtra)}
data Syn_TypeAttributeDef = Syn_TypeAttributeDef {_annotatedTree_Syn_TypeAttributeDef :: TypeAttributeDef,_originalTree_Syn_TypeAttributeDef :: TypeAttributeDef}
_wrap_TypeAttributeDef :: T_TypeAttributeDef ->
                         Inh_TypeAttributeDef ->
                         Syn_TypeAttributeDef
_wrap_TypeAttributeDef sem (Inh_TypeAttributeDef _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_TypeAttributeDef _lhsOannotatedTree _lhsOoriginalTree))
_sem_TypeAttributeDef_TypeAttDef :: T_Annotation ->
                                   NameComponent ->
                                   T_TypeName ->
                                   T_TypeAttributeDef
_sem_TypeAttributeDef_TypeAttDef ann_ name_ typ_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: TypeAttributeDef
              _lhsOoriginalTree :: TypeAttributeDef
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _typOcat :: Catalog
              _typOflags :: TypeCheckFlags
              _typOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _typIannotatedTree :: TypeName
              _typInamedType :: (Maybe TypeExtra)
              _typIoriginalTree :: TypeName
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 231, column 35)
              _annOtpe =
                  ({-# LINE 231 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 27962 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   TypeAttDef _annIannotatedTree name_ _typIannotatedTree
                   {-# LINE 27968 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   TypeAttDef _annIoriginalTree name_ _typIoriginalTree
                   {-# LINE 27974 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 27980 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 27986 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 27992 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 27998 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 28004 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 28010 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 28016 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 28022 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _typIannotatedTree,_typInamedType,_typIoriginalTree) =
                  typ_ _typOcat _typOflags _typOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- TypeAttributeDefList ----------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : TypeAttributeDefList 
         originalTree         : TypeAttributeDefList 
   alternatives:
      alternative Cons:
         child hd             : TypeAttributeDef 
         child tl             : TypeAttributeDefList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type TypeAttributeDefList = [TypeAttributeDef]
-- cata
_sem_TypeAttributeDefList :: TypeAttributeDefList ->
                            T_TypeAttributeDefList
_sem_TypeAttributeDefList list =
    (Prelude.foldr _sem_TypeAttributeDefList_Cons _sem_TypeAttributeDefList_Nil (Prelude.map _sem_TypeAttributeDef list))
-- semantic domain
type T_TypeAttributeDefList = Catalog ->
                              TypeCheckFlags ->
                              (Maybe TypeExtra) ->
                              ( TypeAttributeDefList,TypeAttributeDefList)
data Inh_TypeAttributeDefList = Inh_TypeAttributeDefList {_cat_Inh_TypeAttributeDefList :: Catalog,_flags_Inh_TypeAttributeDefList :: TypeCheckFlags,_imCast_Inh_TypeAttributeDefList :: (Maybe TypeExtra)}
data Syn_TypeAttributeDefList = Syn_TypeAttributeDefList {_annotatedTree_Syn_TypeAttributeDefList :: TypeAttributeDefList,_originalTree_Syn_TypeAttributeDefList :: TypeAttributeDefList}
_wrap_TypeAttributeDefList :: T_TypeAttributeDefList ->
                             Inh_TypeAttributeDefList ->
                             Syn_TypeAttributeDefList
_wrap_TypeAttributeDefList sem (Inh_TypeAttributeDefList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_TypeAttributeDefList _lhsOannotatedTree _lhsOoriginalTree))
_sem_TypeAttributeDefList_Cons :: T_TypeAttributeDef ->
                                 T_TypeAttributeDefList ->
                                 T_TypeAttributeDefList
_sem_TypeAttributeDefList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: TypeAttributeDefList
              _lhsOoriginalTree :: TypeAttributeDefList
              _hdOcat :: Catalog
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: TypeAttributeDef
              _hdIoriginalTree :: TypeAttributeDef
              _tlIannotatedTree :: TypeAttributeDefList
              _tlIoriginalTree :: TypeAttributeDefList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 28093 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 28099 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 28105 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 28111 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 28117 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 28123 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 28129 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 28135 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 28141 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 28147 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree) =
                  hd_ _hdOcat _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_TypeAttributeDefList_Nil :: T_TypeAttributeDefList
_sem_TypeAttributeDefList_Nil =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: TypeAttributeDefList
              _lhsOoriginalTree :: TypeAttributeDefList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 28165 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 28171 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 28177 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 28183 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- TypeName ----------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : TypeName 
         namedType            : Maybe TypeExtra
         originalTree         : TypeName 
   alternatives:
      alternative SimpleTypeName:
         child ann            : Annotation 
         child tn             : Name 
         visit 0:
            local canType     : {[NameComponent] -> [NameComponent]}
            local tpe         : {Either [TypeError] TypeExtra}
            local annotatedTree : _
            local originalTree : _
      alternative PrecTypeName:
         child ann            : Annotation 
         child tn             : Name 
         child prec           : {Integer}
         visit 0:
            local canType     : {[NameComponent] -> [NameComponent]}
            local tpe         : {Either [TypeError] TypeExtra}
            local annotatedTree : _
            local originalTree : _
      alternative Prec2TypeName:
         child ann            : Annotation 
         child tn             : Name 
         child prec           : {Integer}
         child prec1          : {Integer}
         visit 0:
            local canType     : {[NameComponent] -> [NameComponent]}
            local tpe         : {Either [TypeError] TypeExtra}
            local annotatedTree : _
            local originalTree : _
      alternative ArrayTypeName:
         child ann            : Annotation 
         child typ            : TypeName 
         visit 0:
            local canType     : {[NameComponent] -> [NameComponent]}
            local tpe         : {Either [TypeError] TypeExtra}
            local annotatedTree : _
            local originalTree : _
      alternative SetOfTypeName:
         child ann            : Annotation 
         child typ            : TypeName 
         visit 0:
            local canType     : {[NameComponent] -> [NameComponent]}
            local tpe         : {Either [TypeError] TypeExtra}
            local annotatedTree : _
            local originalTree : _
-}
data TypeName = SimpleTypeName (Annotation) (Name)
              | PrecTypeName (Annotation) (Name) (Integer)
              | Prec2TypeName (Annotation) (Name) (Integer) (Integer)
              | ArrayTypeName (Annotation) (TypeName)
              | SetOfTypeName (Annotation) (TypeName)
              deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_TypeName :: TypeName ->
                T_TypeName
_sem_TypeName (SimpleTypeName _ann _tn) =
    (_sem_TypeName_SimpleTypeName (_sem_Annotation _ann) (_sem_Name _tn))
_sem_TypeName (PrecTypeName _ann _tn _prec) =
    (_sem_TypeName_PrecTypeName (_sem_Annotation _ann) (_sem_Name _tn) _prec)
_sem_TypeName (Prec2TypeName _ann _tn _prec _prec1) =
    (_sem_TypeName_Prec2TypeName (_sem_Annotation _ann) (_sem_Name _tn) _prec _prec1)
_sem_TypeName (ArrayTypeName _ann _typ) =
    (_sem_TypeName_ArrayTypeName (_sem_Annotation _ann) (_sem_TypeName _typ))
_sem_TypeName (SetOfTypeName _ann _typ) =
    (_sem_TypeName_SetOfTypeName (_sem_Annotation _ann) (_sem_TypeName _typ))
-- semantic domain
type T_TypeName = Catalog ->
                  TypeCheckFlags ->
                  (Maybe TypeExtra) ->
                  ( TypeName,(Maybe TypeExtra),TypeName)
data Inh_TypeName = Inh_TypeName {_cat_Inh_TypeName :: Catalog,_flags_Inh_TypeName :: TypeCheckFlags,_imCast_Inh_TypeName :: (Maybe TypeExtra)}
data Syn_TypeName = Syn_TypeName {_annotatedTree_Syn_TypeName :: TypeName,_namedType_Syn_TypeName :: (Maybe TypeExtra),_originalTree_Syn_TypeName :: TypeName}
_wrap_TypeName :: T_TypeName ->
                 Inh_TypeName ->
                 Syn_TypeName
_wrap_TypeName sem (Inh_TypeName _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOnamedType,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_TypeName _lhsOannotatedTree _lhsOnamedType _lhsOoriginalTree))
_sem_TypeName_SimpleTypeName :: T_Annotation ->
                               T_Name ->
                               T_TypeName
_sem_TypeName_SimpleTypeName ann_ tn_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOnamedType :: (Maybe TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _tnOtpe :: (Either [TypeError] TypeExtra)
              _canType :: ([NameComponent] -> [NameComponent])
              _tpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: TypeName
              _lhsOoriginalTree :: TypeName
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _tnOcat :: Catalog
              _tnOflags :: TypeCheckFlags
              _tnOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _tnIannotatedTree :: Name
              _tnIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 36, column 10)
              _lhsOnamedType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 28302 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 37, column 10)
              _annOtpe =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   either Left (const $ Left []) _tpe
                   {-# LINE 28308 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 39, column 10)
              _tnOtpe =
                  ({-# LINE 39 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   Left []
                   {-# LINE 28314 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 51, column 10)
              _canType =
                  ({-# LINE 51 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   \x -> case x of
                      [Nmc nc] -> [Nmc $ T.unpack $ canonicalizeTypeName (tcfDialect _lhsIflags) $ T.pack nc]
                      _ -> x
                   {-# LINE 28322 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 63, column 10)
              _tpe =
                  ({-# LINE 63 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   mkTypeExtraNN `liftM` catLookupType _lhsIcat (_canType     $ nameComponents _tnIoriginalTree)
                   {-# LINE 28328 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SimpleTypeName _annIannotatedTree _tnIannotatedTree
                   {-# LINE 28334 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SimpleTypeName _annIoriginalTree _tnIoriginalTree
                   {-# LINE 28340 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 28346 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 28352 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 28358 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 28364 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 28370 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tnOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 28376 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tnOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 28382 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tnOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 28388 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _tnIannotatedTree,_tnIoriginalTree) =
                  tn_ _tnOcat _tnOflags _tnOimCast _tnOtpe
          in  ( _lhsOannotatedTree,_lhsOnamedType,_lhsOoriginalTree)))
_sem_TypeName_PrecTypeName :: T_Annotation ->
                             T_Name ->
                             Integer ->
                             T_TypeName
_sem_TypeName_PrecTypeName ann_ tn_ prec_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOnamedType :: (Maybe TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _tnOtpe :: (Either [TypeError] TypeExtra)
              _canType :: ([NameComponent] -> [NameComponent])
              _tpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: TypeName
              _lhsOoriginalTree :: TypeName
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _tnOcat :: Catalog
              _tnOflags :: TypeCheckFlags
              _tnOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _tnIannotatedTree :: Name
              _tnIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 36, column 10)
              _lhsOnamedType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 28424 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 37, column 10)
              _annOtpe =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   either Left (const $ Left []) _tpe
                   {-# LINE 28430 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 39, column 10)
              _tnOtpe =
                  ({-# LINE 39 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   Left []
                   {-# LINE 28436 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 51, column 10)
              _canType =
                  ({-# LINE 51 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   \x -> case x of
                      [Nmc nc] -> [Nmc $ T.unpack $ canonicalizeTypeName (tcfDialect _lhsIflags) $ T.pack nc]
                      _ -> x
                   {-# LINE 28444 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 77, column 9)
              _tpe =
                  ({-# LINE 77 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   ((\t -> t{tePrecision = Just $ fromIntegral prec_}) . mkTypeExtraNN)
                   `liftM` catLookupType _lhsIcat (nameComponents _tnIoriginalTree)
                   {-# LINE 28451 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   PrecTypeName _annIannotatedTree _tnIannotatedTree prec_
                   {-# LINE 28457 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   PrecTypeName _annIoriginalTree _tnIoriginalTree prec_
                   {-# LINE 28463 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 28469 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 28475 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 28481 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 28487 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 28493 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tnOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 28499 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tnOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 28505 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tnOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 28511 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _tnIannotatedTree,_tnIoriginalTree) =
                  tn_ _tnOcat _tnOflags _tnOimCast _tnOtpe
          in  ( _lhsOannotatedTree,_lhsOnamedType,_lhsOoriginalTree)))
_sem_TypeName_Prec2TypeName :: T_Annotation ->
                              T_Name ->
                              Integer ->
                              Integer ->
                              T_TypeName
_sem_TypeName_Prec2TypeName ann_ tn_ prec_ prec1_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOnamedType :: (Maybe TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _tnOtpe :: (Either [TypeError] TypeExtra)
              _canType :: ([NameComponent] -> [NameComponent])
              _tpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: TypeName
              _lhsOoriginalTree :: TypeName
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _tnOcat :: Catalog
              _tnOflags :: TypeCheckFlags
              _tnOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _tnIannotatedTree :: Name
              _tnIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 36, column 10)
              _lhsOnamedType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 28548 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 37, column 10)
              _annOtpe =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   either Left (const $ Left []) _tpe
                   {-# LINE 28554 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 39, column 10)
              _tnOtpe =
                  ({-# LINE 39 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   Left []
                   {-# LINE 28560 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 51, column 10)
              _canType =
                  ({-# LINE 51 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   \x -> case x of
                      [Nmc nc] -> [Nmc $ T.unpack $ canonicalizeTypeName (tcfDialect _lhsIflags) $ T.pack nc]
                      _ -> x
                   {-# LINE 28568 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 80, column 9)
              _tpe =
                  ({-# LINE 80 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   ((\t -> t{tePrecision = Just $ fromIntegral prec_,
                             teScale = Just $ fromIntegral prec1_})
                         . mkTypeExtraNN)
                   `liftM` catLookupType _lhsIcat (nameComponents _tnIoriginalTree)
                   {-# LINE 28577 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Prec2TypeName _annIannotatedTree _tnIannotatedTree prec_ prec1_
                   {-# LINE 28583 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   Prec2TypeName _annIoriginalTree _tnIoriginalTree prec_ prec1_
                   {-# LINE 28589 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 28595 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 28601 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 28607 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 28613 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 28619 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tnOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 28625 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tnOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 28631 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tnOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 28637 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _tnIannotatedTree,_tnIoriginalTree) =
                  tn_ _tnOcat _tnOflags _tnOimCast _tnOtpe
          in  ( _lhsOannotatedTree,_lhsOnamedType,_lhsOoriginalTree)))
_sem_TypeName_ArrayTypeName :: T_Annotation ->
                              T_TypeName ->
                              T_TypeName
_sem_TypeName_ArrayTypeName ann_ typ_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOnamedType :: (Maybe TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _canType :: ([NameComponent] -> [NameComponent])
              _tpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: TypeName
              _lhsOoriginalTree :: TypeName
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _typOcat :: Catalog
              _typOflags :: TypeCheckFlags
              _typOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _typIannotatedTree :: TypeName
              _typInamedType :: (Maybe TypeExtra)
              _typIoriginalTree :: TypeName
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 36, column 10)
              _lhsOnamedType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 28672 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 37, column 10)
              _annOtpe =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   either Left (const $ Left []) _tpe
                   {-# LINE 28678 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 51, column 10)
              _canType =
                  ({-# LINE 51 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   \x -> case x of
                      [Nmc nc] -> [Nmc $ T.unpack $ canonicalizeTypeName (tcfDialect _lhsIflags) $ T.pack nc]
                      _ -> x
                   {-# LINE 28686 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 71, column 9)
              _tpe =
                  ({-# LINE 71 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   maybe (Left []) Right _typInamedType
                   >>= Right . (\t -> t{teType = ArrayType $ teType t})
                   {-# LINE 28693 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ArrayTypeName _annIannotatedTree _typIannotatedTree
                   {-# LINE 28699 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ArrayTypeName _annIoriginalTree _typIoriginalTree
                   {-# LINE 28705 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 28711 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 28717 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 28723 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 28729 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 28735 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 28741 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 28747 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 28753 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _typIannotatedTree,_typInamedType,_typIoriginalTree) =
                  typ_ _typOcat _typOflags _typOimCast
          in  ( _lhsOannotatedTree,_lhsOnamedType,_lhsOoriginalTree)))
_sem_TypeName_SetOfTypeName :: T_Annotation ->
                              T_TypeName ->
                              T_TypeName
_sem_TypeName_SetOfTypeName ann_ typ_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOnamedType :: (Maybe TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _canType :: ([NameComponent] -> [NameComponent])
              _tpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: TypeName
              _lhsOoriginalTree :: TypeName
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _typOcat :: Catalog
              _typOflags :: TypeCheckFlags
              _typOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _typIannotatedTree :: TypeName
              _typInamedType :: (Maybe TypeExtra)
              _typIoriginalTree :: TypeName
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 36, column 10)
              _lhsOnamedType =
                  ({-# LINE 36 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   either (const Nothing) Just _tpe
                   {-# LINE 28788 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 37, column 10)
              _annOtpe =
                  ({-# LINE 37 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   either Left (const $ Left []) _tpe
                   {-# LINE 28794 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 51, column 10)
              _canType =
                  ({-# LINE 51 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   \x -> case x of
                      [Nmc nc] -> [Nmc $ T.unpack $ canonicalizeTypeName (tcfDialect _lhsIflags) $ T.pack nc]
                      _ -> x
                   {-# LINE 28802 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag"(line 74, column 9)
              _tpe =
                  ({-# LINE 74 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Misc.ag" #-}
                   maybe (Left []) Right _typInamedType
                   >>= Right . (\t -> t{teType = Pseudo $ SetOfType $ teType t})
                   {-# LINE 28809 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SetOfTypeName _annIannotatedTree _typIannotatedTree
                   {-# LINE 28815 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   SetOfTypeName _annIoriginalTree _typIoriginalTree
                   {-# LINE 28821 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 28827 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 28833 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 28839 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 28845 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 28851 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 28857 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 28863 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 28869 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _typIannotatedTree,_typInamedType,_typIoriginalTree) =
                  typ_ _typOcat _typOflags _typOimCast
          in  ( _lhsOannotatedTree,_lhsOnamedType,_lhsOoriginalTree)))
-- TypeNameList ------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : TypeNameList 
         originalTree         : TypeNameList 
   alternatives:
      alternative Cons:
         child hd             : TypeName 
         child tl             : TypeNameList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type TypeNameList = [TypeName]
-- cata
_sem_TypeNameList :: TypeNameList ->
                    T_TypeNameList
_sem_TypeNameList list =
    (Prelude.foldr _sem_TypeNameList_Cons _sem_TypeNameList_Nil (Prelude.map _sem_TypeName list))
-- semantic domain
type T_TypeNameList = Catalog ->
                      TypeCheckFlags ->
                      (Maybe TypeExtra) ->
                      ( TypeNameList,TypeNameList)
data Inh_TypeNameList = Inh_TypeNameList {_cat_Inh_TypeNameList :: Catalog,_flags_Inh_TypeNameList :: TypeCheckFlags,_imCast_Inh_TypeNameList :: (Maybe TypeExtra)}
data Syn_TypeNameList = Syn_TypeNameList {_annotatedTree_Syn_TypeNameList :: TypeNameList,_originalTree_Syn_TypeNameList :: TypeNameList}
_wrap_TypeNameList :: T_TypeNameList ->
                     Inh_TypeNameList ->
                     Syn_TypeNameList
_wrap_TypeNameList sem (Inh_TypeNameList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_TypeNameList _lhsOannotatedTree _lhsOoriginalTree))
_sem_TypeNameList_Cons :: T_TypeName ->
                         T_TypeNameList ->
                         T_TypeNameList
_sem_TypeNameList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: TypeNameList
              _lhsOoriginalTree :: TypeNameList
              _hdOcat :: Catalog
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: TypeName
              _hdInamedType :: (Maybe TypeExtra)
              _hdIoriginalTree :: TypeName
              _tlIannotatedTree :: TypeNameList
              _tlIoriginalTree :: TypeNameList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 28941 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 28947 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 28953 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 28959 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 28965 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 28971 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 28977 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 28983 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 28989 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 28995 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdInamedType,_hdIoriginalTree) =
                  hd_ _hdOcat _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_TypeNameList_Nil :: T_TypeNameList
_sem_TypeNameList_Nil =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: TypeNameList
              _lhsOoriginalTree :: TypeNameList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 29013 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 29019 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 29025 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 29031 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- VarDef ------------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : VarDef 
         originalTree         : VarDef 
   alternatives:
      alternative VarDef:
         child ann            : Annotation 
         child name           : {NameComponent}
         child typ            : TypeName 
         child value          : {Maybe ScalarExpr}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative ParamAlias:
         child ann            : Annotation 
         child name           : {NameComponent}
         child i              : {Integer}
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative VarAlias:
         child ann            : Annotation 
         child name           : {NameComponent}
         child aliased        : Name 
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
data VarDef = VarDef (Annotation) (NameComponent) (TypeName) ((Maybe ScalarExpr))
            | ParamAlias (Annotation) (NameComponent) (Integer)
            | VarAlias (Annotation) (NameComponent) (Name)
            deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_VarDef :: VarDef ->
              T_VarDef
_sem_VarDef (VarDef _ann _name _typ _value) =
    (_sem_VarDef_VarDef (_sem_Annotation _ann) _name (_sem_TypeName _typ) _value)
_sem_VarDef (ParamAlias _ann _name _i) =
    (_sem_VarDef_ParamAlias (_sem_Annotation _ann) _name _i)
_sem_VarDef (VarAlias _ann _name _aliased) =
    (_sem_VarDef_VarAlias (_sem_Annotation _ann) _name (_sem_Name _aliased))
-- semantic domain
type T_VarDef = Catalog ->
                TypeCheckFlags ->
                (Maybe TypeExtra) ->
                ( VarDef,VarDef)
data Inh_VarDef = Inh_VarDef {_cat_Inh_VarDef :: Catalog,_flags_Inh_VarDef :: TypeCheckFlags,_imCast_Inh_VarDef :: (Maybe TypeExtra)}
data Syn_VarDef = Syn_VarDef {_annotatedTree_Syn_VarDef :: VarDef,_originalTree_Syn_VarDef :: VarDef}
_wrap_VarDef :: T_VarDef ->
               Inh_VarDef ->
               Syn_VarDef
_wrap_VarDef sem (Inh_VarDef _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_VarDef _lhsOannotatedTree _lhsOoriginalTree))
_sem_VarDef_VarDef :: T_Annotation ->
                     NameComponent ->
                     T_TypeName ->
                     (Maybe ScalarExpr) ->
                     T_VarDef
_sem_VarDef_VarDef ann_ name_ typ_ value_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: VarDef
              _lhsOoriginalTree :: VarDef
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _typOcat :: Catalog
              _typOflags :: TypeCheckFlags
              _typOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _typIannotatedTree :: TypeName
              _typInamedType :: (Maybe TypeExtra)
              _typIoriginalTree :: TypeName
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 235, column 21)
              _annOtpe =
                  ({-# LINE 235 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 29121 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   VarDef _annIannotatedTree name_ _typIannotatedTree value_
                   {-# LINE 29127 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   VarDef _annIoriginalTree name_ _typIoriginalTree value_
                   {-# LINE 29133 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 29139 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 29145 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 29151 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 29157 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 29163 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 29169 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 29175 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _typOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 29181 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _typIannotatedTree,_typInamedType,_typIoriginalTree) =
                  typ_ _typOcat _typOflags _typOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_VarDef_ParamAlias :: T_Annotation ->
                         NameComponent ->
                         Integer ->
                         T_VarDef
_sem_VarDef_ParamAlias ann_ name_ i_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: VarDef
              _lhsOoriginalTree :: VarDef
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 232, column 25)
              _annOtpe =
                  ({-# LINE 232 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 29208 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ParamAlias _annIannotatedTree name_ i_
                   {-# LINE 29214 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   ParamAlias _annIoriginalTree name_ i_
                   {-# LINE 29220 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 29226 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 29232 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 29238 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 29244 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 29250 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_VarDef_VarAlias :: T_Annotation ->
                       NameComponent ->
                       T_Name ->
                       T_VarDef
_sem_VarDef_VarAlias ann_ name_ aliased_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _aliasedOtpe :: (Either [TypeError] TypeExtra)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _lhsOannotatedTree :: VarDef
              _lhsOoriginalTree :: VarDef
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _aliasedOcat :: Catalog
              _aliasedOflags :: TypeCheckFlags
              _aliasedOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _aliasedIannotatedTree :: Name
              _aliasedIoriginalTree :: Name
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 233, column 23)
              _aliasedOtpe =
                  ({-# LINE 233 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 29281 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag"(line 234, column 23)
              _annOtpe =
                  ({-# LINE 234 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/Boilerplate.ag" #-}
                   Left []
                   {-# LINE 29287 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   VarAlias _annIannotatedTree name_ _aliasedIannotatedTree
                   {-# LINE 29293 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   VarAlias _annIoriginalTree name_ _aliasedIoriginalTree
                   {-# LINE 29299 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 29305 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 29311 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 29317 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 29323 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 29329 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _aliasedOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 29335 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _aliasedOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 29341 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _aliasedOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 29347 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _aliasedIannotatedTree,_aliasedIoriginalTree) =
                  aliased_ _aliasedOcat _aliasedOflags _aliasedOimCast _aliasedOtpe
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- VarDefList --------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : VarDefList 
         originalTree         : VarDefList 
   alternatives:
      alternative Cons:
         child hd             : VarDef 
         child tl             : VarDefList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type VarDefList = [VarDef]
-- cata
_sem_VarDefList :: VarDefList ->
                  T_VarDefList
_sem_VarDefList list =
    (Prelude.foldr _sem_VarDefList_Cons _sem_VarDefList_Nil (Prelude.map _sem_VarDef list))
-- semantic domain
type T_VarDefList = Catalog ->
                    TypeCheckFlags ->
                    (Maybe TypeExtra) ->
                    ( VarDefList,VarDefList)
data Inh_VarDefList = Inh_VarDefList {_cat_Inh_VarDefList :: Catalog,_flags_Inh_VarDefList :: TypeCheckFlags,_imCast_Inh_VarDefList :: (Maybe TypeExtra)}
data Syn_VarDefList = Syn_VarDefList {_annotatedTree_Syn_VarDefList :: VarDefList,_originalTree_Syn_VarDefList :: VarDefList}
_wrap_VarDefList :: T_VarDefList ->
                   Inh_VarDefList ->
                   Syn_VarDefList
_wrap_VarDefList sem (Inh_VarDefList _lhsIcat _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOoriginalTree) = sem _lhsIcat _lhsIflags _lhsIimCast
     in  (Syn_VarDefList _lhsOannotatedTree _lhsOoriginalTree))
_sem_VarDefList_Cons :: T_VarDef ->
                       T_VarDefList ->
                       T_VarDefList
_sem_VarDefList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: VarDefList
              _lhsOoriginalTree :: VarDefList
              _hdOcat :: Catalog
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: VarDef
              _hdIoriginalTree :: VarDef
              _tlIannotatedTree :: VarDefList
              _tlIoriginalTree :: VarDefList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 29418 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 29424 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 29430 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 29436 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 29442 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 29448 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 29454 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 29460 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 29466 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 29472 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIoriginalTree) =
                  hd_ _hdOcat _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
_sem_VarDefList_Nil :: T_VarDefList
_sem_VarDefList_Nil =
    (\ _lhsIcat
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOannotatedTree :: VarDefList
              _lhsOoriginalTree :: VarDefList
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 29490 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 29496 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 29502 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 29508 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOoriginalTree)))
-- WithQuery ---------------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         catExtIncomp         : Either [TypeError] Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : WithQuery 
         colAliases           : Maybe [NameComponent]
         name                 : Text
         originalTree         : WithQuery 
         upType               : Maybe [(Text,TypeExtra)]
   alternatives:
      alternative WithQuery:
         child ann            : Annotation 
         child name           : {NameComponent}
         child colAliases     : {Maybe [NameComponent]}
         child ex             : QueryExpr 
         visit 0:
            local tpee        : {Either [TypeError] [(Text,TypeExtra)]}
            local tpe         : {Either [TypeError] TypeExtra}
            local annotatedTree : _
            local originalTree : _
-}
data WithQuery = WithQuery (Annotation) (NameComponent) ((Maybe [NameComponent])) (QueryExpr)
               deriving ( Data,Eq,Show,Typeable)
-- cata
_sem_WithQuery :: WithQuery ->
                 T_WithQuery
_sem_WithQuery (WithQuery _ann _name _colAliases _ex) =
    (_sem_WithQuery_WithQuery (_sem_Annotation _ann) _name _colAliases (_sem_QueryExpr _ex))
-- semantic domain
type T_WithQuery = Catalog ->
                   (Either [TypeError] Catalog) ->
                   TypeCheckFlags ->
                   (Maybe TypeExtra) ->
                   ( WithQuery,(Maybe [NameComponent]),Text,WithQuery,(Maybe [(Text,TypeExtra)]))
data Inh_WithQuery = Inh_WithQuery {_cat_Inh_WithQuery :: Catalog,_catExtIncomp_Inh_WithQuery :: (Either [TypeError] Catalog),_flags_Inh_WithQuery :: TypeCheckFlags,_imCast_Inh_WithQuery :: (Maybe TypeExtra)}
data Syn_WithQuery = Syn_WithQuery {_annotatedTree_Syn_WithQuery :: WithQuery,_colAliases_Syn_WithQuery :: (Maybe [NameComponent]),_name_Syn_WithQuery :: Text,_originalTree_Syn_WithQuery :: WithQuery,_upType_Syn_WithQuery :: (Maybe [(Text,TypeExtra)])}
_wrap_WithQuery :: T_WithQuery ->
                  Inh_WithQuery ->
                  Syn_WithQuery
_wrap_WithQuery sem (Inh_WithQuery _lhsIcat _lhsIcatExtIncomp _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOcolAliases,_lhsOname,_lhsOoriginalTree,_lhsOupType) = sem _lhsIcat _lhsIcatExtIncomp _lhsIflags _lhsIimCast
     in  (Syn_WithQuery _lhsOannotatedTree _lhsOcolAliases _lhsOname _lhsOoriginalTree _lhsOupType))
_sem_WithQuery_WithQuery :: T_Annotation ->
                           NameComponent ->
                           (Maybe [NameComponent]) ->
                           T_QueryExpr ->
                           T_WithQuery
_sem_WithQuery_WithQuery ann_ name_ colAliases_ ex_ =
    (\ _lhsIcat
       _lhsIcatExtIncomp
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOname :: Text
              _lhsOannotatedTree :: WithQuery
              _lhsOcolAliases :: (Maybe [NameComponent])
              _tpee :: (Either [TypeError] [(Text,TypeExtra)])
              _tpe :: (Either [TypeError] TypeExtra)
              _lhsOupType :: (Maybe [(Text,TypeExtra)])
              _exOouterDownEnv :: (Maybe Environment)
              _annOtpe :: (Either [TypeError] TypeExtra)
              _exOexpectedType :: (Maybe [TypeExtra])
              _exOassignmentCastContext :: Bool
              _lhsOoriginalTree :: WithQuery
              _annOcat :: Catalog
              _annOflags :: TypeCheckFlags
              _annOimCast :: (Maybe TypeExtra)
              _exOcat :: Catalog
              _exOflags :: TypeCheckFlags
              _exOimCast :: (Maybe TypeExtra)
              _annIannotatedTree :: Annotation
              _annIoriginalTree :: Annotation
              _exIannotatedTree :: QueryExpr
              _exIoriginalTree :: QueryExpr
              _exIupType :: (Maybe [(Text,TypeExtra)])
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 56, column 9)
              _lhsOname =
                  ({-# LINE 56 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   ncStrT name_
                   {-# LINE 29594 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 57, column 9)
              _lhsOannotatedTree =
                  ({-# LINE 57 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   WithQuery _annIannotatedTree name_ colAliases_ _exIannotatedTree
                   {-# LINE 29600 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 58, column 9)
              _lhsOcolAliases =
                  ({-# LINE 58 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   colAliases_
                   {-# LINE 29606 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 62, column 9)
              _tpee =
                  ({-# LINE 62 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   maybe (Left []) Right _exIupType
                   {-# LINE 29612 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 64, column 9)
              _tpe =
                  ({-# LINE 64 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   liftM (mkTypeExtra . CompositeType) _tpee
                   {-# LINE 29618 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 66, column 9)
              _lhsOupType =
                  ({-# LINE 66 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   either (const Nothing) Just _tpee
                   {-# LINE 29624 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 95, column 15)
              _exOouterDownEnv =
                  ({-# LINE 95 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   Nothing
                   {-# LINE 29630 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 101, column 9)
              _annOtpe =
                  ({-# LINE 101 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   Left []
                   {-# LINE 29636 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 102, column 9)
              _exOexpectedType =
                  ({-# LINE 102 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   liftM (map snd) _exIupType
                   {-# LINE 29642 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag"(line 845, column 27)
              _exOassignmentCastContext =
                  ({-# LINE 845 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/ScalarExprs.ag" #-}
                   False
                   {-# LINE 29648 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   WithQuery _annIannotatedTree name_ colAliases_ _exIannotatedTree
                   {-# LINE 29654 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   WithQuery _annIoriginalTree name_ colAliases_ _exIoriginalTree
                   {-# LINE 29660 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 29666 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 29672 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 29678 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _annOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 29684 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 29690 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 29696 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _exOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 29702 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _annIannotatedTree,_annIoriginalTree) =
                  ann_ _annOcat _annOflags _annOimCast _annOtpe
              ( _exIannotatedTree,_exIoriginalTree,_exIupType) =
                  ex_ _exOassignmentCastContext _exOcat _exOexpectedType _exOflags _exOimCast _exOouterDownEnv
          in  ( _lhsOannotatedTree,_lhsOcolAliases,_lhsOname,_lhsOoriginalTree,_lhsOupType)))
-- WithQueryList -----------------------------------------------
{-
   visit 0:
      inherited attributes:
         cat                  : Catalog
         catExtIncomp         : Either [TypeError] Catalog
         flags                : TypeCheckFlags
         imCast               : Maybe TypeExtra
      synthesized attributes:
         annotatedTree        : WithQueryList 
         catExtComp           : Either [TypeError] Catalog
         originalTree         : WithQueryList 
   alternatives:
      alternative Cons:
         child hd             : WithQuery 
         child tl             : WithQueryList 
         visit 0:
            local annotatedTree : _
            local originalTree : _
      alternative Nil:
         visit 0:
            local annotatedTree : _
            local originalTree : _
-}
type WithQueryList = [WithQuery]
-- cata
_sem_WithQueryList :: WithQueryList ->
                     T_WithQueryList
_sem_WithQueryList list =
    (Prelude.foldr _sem_WithQueryList_Cons _sem_WithQueryList_Nil (Prelude.map _sem_WithQuery list))
-- semantic domain
type T_WithQueryList = Catalog ->
                       (Either [TypeError] Catalog) ->
                       TypeCheckFlags ->
                       (Maybe TypeExtra) ->
                       ( WithQueryList,(Either [TypeError] Catalog),WithQueryList)
data Inh_WithQueryList = Inh_WithQueryList {_cat_Inh_WithQueryList :: Catalog,_catExtIncomp_Inh_WithQueryList :: (Either [TypeError] Catalog),_flags_Inh_WithQueryList :: TypeCheckFlags,_imCast_Inh_WithQueryList :: (Maybe TypeExtra)}
data Syn_WithQueryList = Syn_WithQueryList {_annotatedTree_Syn_WithQueryList :: WithQueryList,_catExtComp_Syn_WithQueryList :: (Either [TypeError] Catalog),_originalTree_Syn_WithQueryList :: WithQueryList}
_wrap_WithQueryList :: T_WithQueryList ->
                      Inh_WithQueryList ->
                      Syn_WithQueryList
_wrap_WithQueryList sem (Inh_WithQueryList _lhsIcat _lhsIcatExtIncomp _lhsIflags _lhsIimCast) =
    (let ( _lhsOannotatedTree,_lhsOcatExtComp,_lhsOoriginalTree) = sem _lhsIcat _lhsIcatExtIncomp _lhsIflags _lhsIimCast
     in  (Syn_WithQueryList _lhsOannotatedTree _lhsOcatExtComp _lhsOoriginalTree))
_sem_WithQueryList_Cons :: T_WithQuery ->
                          T_WithQueryList ->
                          T_WithQueryList
_sem_WithQueryList_Cons hd_ tl_ =
    (\ _lhsIcat
       _lhsIcatExtIncomp
       _lhsIflags
       _lhsIimCast ->
         (let _tlOcatExtIncomp :: (Either [TypeError] Catalog)
              _hdOcat :: Catalog
              _lhsOannotatedTree :: WithQueryList
              _lhsOoriginalTree :: WithQueryList
              _lhsOcatExtComp :: (Either [TypeError] Catalog)
              _hdOcatExtIncomp :: (Either [TypeError] Catalog)
              _hdOflags :: TypeCheckFlags
              _hdOimCast :: (Maybe TypeExtra)
              _tlOcat :: Catalog
              _tlOflags :: TypeCheckFlags
              _tlOimCast :: (Maybe TypeExtra)
              _hdIannotatedTree :: WithQuery
              _hdIcolAliases :: (Maybe [NameComponent])
              _hdIname :: Text
              _hdIoriginalTree :: WithQuery
              _hdIupType :: (Maybe [(Text,TypeExtra)])
              _tlIannotatedTree :: WithQueryList
              _tlIcatExtComp :: (Either [TypeError] Catalog)
              _tlIoriginalTree :: WithQueryList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 34, column 9)
              _tlOcatExtIncomp =
                  ({-# LINE 34 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   do
                   let getWithEx (WithQuery _ _ _ ex) = ex
                   upType' <- maybe (Left . anErrs . ann . getWithEx $ _hdIannotatedTree) Right
                     _hdIupType
                   colTyPairs <- mapM (secondM typeToCatName) upType'
                   colTyPairs' <- case _hdIcolAliases of
                     Just alsNms -> do
                       unless (length alsNms == length colTyPairs) $
                         Left [BadCatalogUpdate "number of aliases differs from number of expressions in the select"]
                       return $ zip (map ncStrT alsNms) $ map snd colTyPairs
                     Nothing -> return colTyPairs
                   updateCatalog [CatCreateTable ("public", _hdIname ) colTyPairs'] =<< _lhsIcatExtIncomp
                   {-# LINE 29795 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 47, column 9)
              _hdOcat =
                  ({-# LINE 47 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   case _lhsIcatExtIncomp of
                     Right catExtIncomp -> catExtIncomp
                     Left _ -> _lhsIcat
                   {-# LINE 29803 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIannotatedTree _tlIannotatedTree
                   {-# LINE 29809 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   (:) _hdIoriginalTree _tlIoriginalTree
                   {-# LINE 29815 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 29821 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 29827 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (up)
              _lhsOcatExtComp =
                  ({-# LINE 29 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _tlIcatExtComp
                   {-# LINE 29833 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOcatExtIncomp =
                  ({-# LINE 24 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIcatExtIncomp
                   {-# LINE 29839 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 29845 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _hdOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 29851 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOcat =
                  ({-# LINE 116 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIcat
                   {-# LINE 29857 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOflags =
                  ({-# LINE 117 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIflags
                   {-# LINE 29863 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- copy rule (down)
              _tlOimCast =
                  ({-# LINE 129 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _lhsIimCast
                   {-# LINE 29869 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              ( _hdIannotatedTree,_hdIcolAliases,_hdIname,_hdIoriginalTree,_hdIupType) =
                  hd_ _hdOcat _hdOcatExtIncomp _hdOflags _hdOimCast
              ( _tlIannotatedTree,_tlIcatExtComp,_tlIoriginalTree) =
                  tl_ _tlOcat _tlOcatExtIncomp _tlOflags _tlOimCast
          in  ( _lhsOannotatedTree,_lhsOcatExtComp,_lhsOoriginalTree)))
_sem_WithQueryList_Nil :: T_WithQueryList
_sem_WithQueryList_Nil =
    (\ _lhsIcat
       _lhsIcatExtIncomp
       _lhsIflags
       _lhsIimCast ->
         (let _lhsOcatExtComp :: (Either [TypeError] Catalog)
              _lhsOannotatedTree :: WithQueryList
              _lhsOoriginalTree :: WithQueryList
              -- "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag"(line 52, column 9)
              _lhsOcatExtComp =
                  ({-# LINE 52 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/QueryExprs/QueryExprs.ag" #-}
                   _lhsIcatExtIncomp
                   {-# LINE 29889 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _annotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 29895 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _originalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   []
                   {-# LINE 29901 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOannotatedTree =
                  ({-# LINE 118 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _annotatedTree
                   {-# LINE 29907 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
              -- self rule
              _lhsOoriginalTree =
                  ({-# LINE 119 "hssqlppp/src/Database/HsSqlPpp/Internals/TypeChecking/TypeChecking.ag" #-}
                   _originalTree
                   {-# LINE 29913 "hssqlppp/src/Database/HsSqlPpp/Internals/AstInternal.hs" #-}
                   )
          in  ( _lhsOannotatedTree,_lhsOcatExtComp,_lhsOoriginalTree)))